The UNIX and Linux Forums  


Go Back   Les systèmes UNIX et Linux Forums > Top Forums > UNIX for Advanced & Expert Users
.
google unix.com



UNIX for Advanced & Expert Users Expert à Expert. Apprenez avancé UNIX, des commandes UNIX, Linux, les systèmes d'exploitation, d'administration système, de la Programmation, Shell, Shell Scripts, Solaris, Linux, HP-UX, AIX, OS X, BSD.

Plus d'UNIX et Linux Forum Sujets Vous trouverez peut-être utile
Fil Thread Starter Forum Réponses Last Post
Problème dans HP-Unix en cours de rédaction en socket AshokG HP-UX 0 02-25-2005 02:19 AM
Socket Programming socket soshell High Level Programming 2 06-29-2004 08:49 AM
Comment puis-je programme de prise en unix? sanjohn High Level Programming 7 06-21-2002 12:26 AM
Comment faire pour utiliser le socket niuzefeng High Level Programming 1 06-30-2001 02:15 PM
socket amin IP Networking 1 02-10-2001 04:45 PM

 
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
LinkBack Thread Tools Recherche sur ce Thread Rate Thread Modes d'affichage
  #1 (permalink)  
Old 05-20-2008
bounkolh bounkolh is offline
Registered User
  
 

Join Date: Mai 2008
Messages: 1
Unix: socket & Co

Bonjour,
J'ai besoin d'aide pour remplacer le ................. client.c de cette demande, le serveur mis en oeuvre par server.c

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

/ * Inclusion des différentes librairies 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 place côté serveur * /
int serv_sock;
/ * Socket mise en place côté client * /
int cli_sock;
/ * Adresse de la socket distante * /
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 de creer la socket'')
exit (-1);
)
/ * Mise en place de la structure décrivant l'adresse
* Et le port qui seront associés à la socket * /
bzero ((char *) & localaddr, localaddr_len);
/ * Protocole internet * /
localaddr.sin_family \u003d AF.INET;
/ * On écoute sur l'adresse de boucle locale * /
localaddr.sin_addr.s_addr \u003d inet_addr (127.0.0.1'''');
/ * On écoute sur le port 1234 * /
localaddr.sin_port \u003d htons (1234);

/ * On attache la socket au port 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 socket'');
exit (-1);
)
/ * Mise en place de l'écoute sur la socket * /
if (listen (serv_sock, 1) \u003d\u003d -1) (
perror (''Impossible d'écouter sur la socket'');
exit (-1);
)
/ * On accepte les connexions entrantes * /
cli_sock \u003d accepter (serv_sock,
(struct sockaddr *) & distaddr,
& distaddr_len);
if (cli_sock \u003d\u003d -1) (
perror (''Erreur de connexion du client'');
exit (-1);
)
/ * Sur la première reçoit operande * /
res \u003d recv (cli_sock, &buf; sizeof (int), 0);
if (res! \u003d sizeof (int)) (
perror (''Donnees recues incorrectes'');
close (serv_sock);
exit (-1);
)
a \u003d ntohl (buf);
printf (''recu:% d / n'', a);

/ * On reçoit la deuxieme operande * /
res \u003d recv (cli_sock, & buf, sizeof (en), 0);
if (res! \u003d sizeof (int)) (
perror (''Donnees 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);
/ * On envoie le resultat * /
res \u003d send (cli_sock, & buf, sizeof (int), 0);
if (res! \u003d sizeof (int)) (
perror (''Erreur de transmission de donnees'');
close (serv_sock);
exit (-1)
)
close (serv_sock);
close (cli_sock);
return ();
)
-----------------
Listing 2 - client.c

/ / Inclusion des différentes librairies 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 place cote serveur * /
int serv_sock;
/ * Socket mise en place cote client * /
int cli_sock;
/ * Adresse de la socket distante * /
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);

/ * Création de la socket * /
cli.sock \u003d .............................
if (cli_sock \u003d\u003d -1) (
perror (''Impossible de creer la socket'');
exit (-1);
)
/ * Mise en place de la structure decrivant
* L'adresse et le port qui seront associés
* A la socket * /
bzero ((char *) & distaddr, distaddr_len);
/ * Protocole internet * /
distaddr.sin_family \u003d .......................
/ * On se connecté sur l'adresse de boucle locale * /
distaddr.sin_addr.s_addr \u003d inet_addr (''127.0.0.1 ");
/ * On se connecté sur le port 1234 * /
distaddr.sin.port \u003d .............................
/ * Connexion au serveur * /
serv_sock \u003d ....................................
if (serv_sock \u003d\u003d -1) (
perror (''Impossible de se connecter'');
)
/ * On envoi la premiere operande * /
res \u003d .....................................
if (res! \u003d sizeof (int)) (
perror (''Impossible d'envoyer les donnees'');
close (cli_sock);
exit (-1);
)

/ * On envoie la seconde operande * /
res \u003d send (cli_sock, & b, sizeof (int), 0);
if (res! \u003d sizeof (int)) (
perror (''Impossible d'envoyer les donnees'');
close (cli_sock);
exit (-1);
)
/ * On récupère le résultat * /
res \u003d ....................................
if (res! \u003d sizeof (int)) (
perror (''Impossible de lire les donnees'');
close (cli_sock);
exit (-1);
)
printf (''Resultat:% d \ n'', ntohl (buf));
.............................
close (serv_sock);
return 0;
)
 

Bookmarks

Thread Tools Recherche sur ce Thread
Recherche sur ce Thread:

Recherche avancée
Modes d'affichage Rate this thread
Rate this thread:

Règles de messages
Tu mai pas de nouvelles discussions: nonoui
Tu mai pas envoyer des réponses:
Tu mai pas envoyer des pièces jointes
Tu mai pas modifier vos messages

BB code est Sur
Smilies sont Sur
[IMG] code est Sur
Le code HTML est Hors tension
Trackbacks sont Sur
Pingbacks sont Sur
Refbacks sont Sur




Toutes les heures sont au format GMT -4. Le temps est maintenant 11:14 PM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Traductions Langue Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
Les systèmes UNIX et Linux Forums Content Copyright © 1993-2009. Tous droits Reserved.Ad de gestion par RedTyger

Content Relevant URLs par vBSEO 3.2.0