The UNIX and Linux Forums  


Go Back   O UNIX e Linux Forum > Top Fóruns > UNIX & avançada para usuários experientes
.
google unix.com



UNIX & avançada para usuários experientes Especialista-a-Expert. Saiba avançado UNIX, comandos UNIX, Linux, Sistemas Operativos, Administração de Sistemas, Programação, Shell, shell scripts, Solaris, Linux, HP-UX, AIX, OS X, BSD.

Mais UNIX e Linux Fórum Tópicos Você pode achar Helpfull
Fio Thread Starter Fórum Respostas Última postagem
Problema em HP-Unix ao escrever em socket AshokG HP-UX 0 02-25-2005 02:19
Programação Socket socket soshell Alto Nível de programação 2 06-29-2004 08:49
Como posso programa socket no Unix? sanjohn Alto Nível de programação 7 06-21-2002 12:26
Como usar o soquete niuzefeng Alto Nível de programação 1 06-30-2001 02:15
socket Amin IP Networking 1 02-10-2001 04:45

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
Linkback Thread Tools Pesquisar este Thread Rate Thread Display Modes
  #1 (permalink)  
Old 05-20-2008
bounkolh bounkolh is offline
Usuário
  
 

Join Date: May 2008
Posts: 1
Unix: socket & Co

Olá,
Preciso de ajuda para substituir o ................. client.c pedido de que o servidor implementada pelo server.c

------------------
Listing 1 - server.c

/ * Inclusão das diferentes bibliotecas nécessaires * /
# include <stdio.h>
# include <stdlib.h>
# include <unistd.h>
# include <string.h>

# include <sys/types.h>
# include <sys/socket.h>
# include <netinet.in.h>
# include <arpa.inet.h>

int main (int argc, char * argv [])
(
int res;
/ * Operandes * /
int a, b, buf;
/ * Socket mise en lugar côté serveur * /
int serv_sock;
/ * Socket mise en lugar côté cliente * /
int cli_sock;
/ * Adresse de la distante socket * /
struct sockaddr_in localaddr;
/ * Longueur de l'adresse * /
socklen_t localaddr_len;
/ * Longueur de l'adresse * /
socklen_t distaddr_len;
localaddr_len \u003d sizeof (localaddr);

/ * Mise en place de la socket * /
serv_sock \u003d socket (AF_INET.SOCK_STREAM, 0);
if (serv_sock \u003d socket (AF_INET.SOCK_STREAM, 0);
if (serv_sock \u003d\u003d -1) (
perror (''Impossible creer de la soquete'')
exit (-1);
)
/ * Mise en place de la estrutura décrivant l'adresse
* Et le porto qui seront associadas à la socket * /
bzero ((char *) & localaddr, localaddr_len);
/ * Protocole Internet * /
localaddr.sin_family \u003d AF.INET;
/ * Em écoute sur l'adresse de boucle locale * /
localaddr.sin_addr.s_addr \u003d inet_addr (''127.0.0.1'');
/ * Em écoute sur le port 1234 * /
localaddr.sin_port \u003d htons (1234);

/ * Em socket adido la au porto 1234 sur
* L'adresse locale 127.0.0.1 * /
if (bind (serv_sock,
(struct sockaddr *) & localaddr,
localaddr_len) \u003d\u003d -1) (
perror (''Impossible d'attacher la soquete'');
exit (-1);
)
/ * Mise en place de l'écoute sur la socket * /
if (listen (serv_sock, 1) \u003d\u003d -1) (
perror (''Impossible d'Ecouter sur la soquete'');
exit (-1);
)
/ * Em aceite as ligações entrantes * /
cli_sock \u003d aceitar (serv_sock,
(struct sockaddr *) & distaddr,
& distaddr_len);
if (cli_sock \u003d\u003d -1) (
perror (''Erreur de ligação do cliente'');
exit (-1);
)
/ * Recoit sobre la première operande * /
res \u003d recv (cli_sock, &buf; sizeof (int), 0);
if (res! \u003d sizeof (int)) (
perror (''Données recues incorrectes'');
close (serv_sock);
exit (-1);
)
a \u003d ntohl (buf);
printf (''Recu:% d / n'', a);

/ * Em recoit la deuxième operande * /
res \u003d recv (cli_sock, & buf, sizeof (em), 0);
if (res! \u003d sizeof (int)) (
perror (''Données recues incorrectes'');
close (serv_sock);
exit (-1);
)
b \u003d ntohl (buf);
printf (''Recu:% d \ n'', b);

htonl buf \u003d (a + b);
printf (''envoi:% d \ n'', a + b);
/ * Em envoie le resultado * /
res \u003d enviar (cli_sock, & buf, sizeof (int), 0);
if (res! \u003d sizeof (int)) (
perror (''Erreur de transmissão de dados'');
close (serv_sock);
exit (-1)
)
close (serv_sock);
close (cli_sock);
return ();
)
-----------------
Lista 2 - client.c

/ / Inclusão das diferentes bibliotecas nécessaires
# include <stdio.h>
# include <stdlib.h>
# include <unistd.h>
# include <string.h>

# include <sys/types.h>
# include <sys/socket.h>

# include <netinet/in.h>
# include <arpa/inet.h>

int main (int argc, char * argv [])
(
int res;
/ * Operandes * /
int a, b, buf;
/ * Socket mise en lugar aprisco serveur * /
int serv_sock;
/ * Socket mise en lugar aprisco cliente * /
int cli_sock;
/ * Adresse de la distante socket * /
struct sockaddr_in distaddr;
/ * Longueur de l'adresse * /
socklen_t distaddr_len;
distaddr_len \u003d sizeof (distaddr);

a \u003d htonl (123);
b \u003d btonl (124);

/ * Criação de la socket * /
cli.sock \u003d .............................
if (cli_sock \u003d\u003d -1) (
perror (''Impossible creer de la soquete'');
exit (-1);
)
/ * Mise en place de la estrutura decrivant
* L'adresse et le porto qui seront Associes
* La um socket * /
bzero ((char *) & distaddr, distaddr_len);
/ * Protocole Internet * /
distaddr.sin_family \u003d .......................
/ * Em se connecte sur l'adresse de boucle locale * /
distaddr.sin_addr.s_addr \u003d inet_addr (''127.0.0.1 ");
/ * Em se connecte sur le port 1234 * /
distaddr.sin.port \u003d .............................
/ * Connexion au serveur * /
serv_sock \u003d ....................................
if (serv_sock \u003d\u003d -1) (
perror (''Impossível de se connecter'');
)
/ * Em envoi la premiere operande * /
res \u003d .....................................
if (res! \u003d sizeof (int)) (
perror (''Impossible d'envoyer les données'');
close (cli_sock);
exit (-1);
)

/ * Em envoie la seconde operande * /
res \u003d enviar (cli_sock, & b, sizeof (int), 0);
if (res! \u003d sizeof (int)) (
perror (''Impossible d'envoyer les données'');
close (cli_sock);
exit (-1);
)
/ * Em recupere o resultado * /
res \u003d ....................................
if (res! \u003d sizeof (int)) (
perror (''Impossible de lire les données'');
close (cli_sock);
exit (-1);
)
printf (''Resultado:% d \ n'', ntohl (buf));
.............................
close (serv_sock);
return 0;
)
Closed Thread

Marcadores

Thread Tools Pesquisar este Thread
Pesquisar este Thread:

Pesquisa Avançada
Display Modes Esta taxa Thread
Esta taxa Thread:

Destacamento Regimento
Você não pode postar novas threads
Você não pode postar respostas
Você não pode postar anexos
Você não pode editar suas postagens

BB code é Ligado
Smilies são Ligado
[IMG] código é Ligado
Código HTML é Desligado
Trackbacks são Ligado
Pingbacks são Ligado
Refbacks são Ligado




Todos os horários são GMT -4. A hora é agora 10:06.


Powered by: vBulletinCopyright © 2000 - 2006, Jelsoft Enterprises Limited. Língua Traduções Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
O UNIX e Linux Fóruns Content Copyright © 1993-2009. Todos os Direitos Reserved.Ad Gestão por RedTyger

Content Relevant URLs por vBSEO 3.2.0