[C] comment
Résolu/Fermé4 réponses
Canard007
Messages postés
5929
Date d'inscription
mercredi 26 mai 2004
Statut
Contributeur
Dernière intervention
18 septembre 2009
215
7 avril 2005 à 13:45
7 avril 2005 à 13:45
programme de base:
CLIENT:
CLIENT:
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <netdb.h> #include <unistd.h> #define PORT 20100 void main() { int sk,addrlen,nbr; struct sockaddr_in myaddr; char buffer[40]; struct hostent *host_addr; char retour[] = "Message retour du client"; //creation socket if((sk=socket(AF_INET,SOCK_STREAM,0))== -1) { perror("prog client erreur appel socket"); } host_addr=gethostbyname("localhost"); myaddr.sin_addr.s_addr=((struct in_addr *)(host_addr->h_addr))->s_addr; myaddr.sin_port=PORT; // myaddr.sin_port=htons(PORT); myaddr.sin_family=AF_INET; //demande de connexion addrlen=sizeof(struct sockaddr_in); if(connect(sk,(struct sockaddr*)&myaddr,addrlen)==-1) { perror("prog client erreur appel connect"); return; } //reception donnees if((nbr=read(sk,buffer,40))==-1) { perror("erreur appel read"); } printf("buffer recu: %s\n",buffer); //repond au serveur if((nbr=write(sk, retour,strlen(retour)+1))==-1) { perror("erreur appel write"); } if(close (sk)==-1) { perror("erreur appel close"); } }
Canard007
Messages postés
5929
Date d'inscription
mercredi 26 mai 2004
Statut
Contributeur
Dernière intervention
18 septembre 2009
215
7 avril 2005 à 13:46
7 avril 2005 à 13:46
SERVEUR:
#include <string.h> #include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <netdb.h> #include <unistd.h> #define PORT 20100 void main(void) { int ls,sk,nbr; struct sockaddr_in myaddr; struct sockaddr_in remaddr; char buffer[40]; unsigned int addrlen; char message[]="Message du serveur"; if (( ls = socket(AF_INET, SOCK_STREAM, 0)) == -1 ) { printf("erreur appel socket"); } memset (&myaddr, 0, sizeof(myaddr)); myaddr.sin_port = PORT; myaddr.sin_family = AF_INET; if ( bind(ls,(struct sockaddr*)&myaddr, sizeof(struct sockaddr_in)) == -1) { perror("erreur bind"); } if ( listen (ls,1) == -1 ) { printf("erreur listen"); } addrlen = sizeof(struct sockaddr_in); if (( sk = accept(ls,(struct sockaddr*) &remaddr,&addrlen)) == -1 ) { printf("erreur accept"); } if ( (nbr=write(sk,message,strlen(message)+1)) == -1 ) { printf("erreur write"); } if (( nbr = read(sk,buffer,40)) == -1 ) { printf("erreur read"); } printf("j ai recu :%s \n",buffer); close(sk); if(close (sk)==-1) { perror("erreur appel close"); } if(close (ls)==-1) { perror("erreur appel close"); } }