/*===============================================*\ Auteur orig.: ??? Samedi 13 Juillet 2002 M.Lokbani validation gcc 2.95.3 - gestion des erreurs - corrections des warnings relatifs aux E/S du systèmes. \*================================================*/ #include #include #include #include #include #include #include #include #include #include #define str1 "Bonjour le monde\n" #define str2 "Hello world\n" int main( int argc, char **argv ) { int sockfd; struct sockaddr_in serveraddr; int port, nb; char buffer[BUFSIZ]; struct hostent *host; if( argc <= 2 ) { printf("USAGE: server \n"); exit( -1 ); } port = atoi( argv[2] ); if( (host = gethostbyname( argv[1] )) == NULL ) { printf("Can't resolve addresse\n"); exit( 0 ); }; if( (sockfd = socket( AF_INET, SOCK_STREAM, 0 )) < 0 ) { printf("Socket erreur.\n"); exit( -1 ); } memset( &serveraddr, 0, sizeof( struct sockaddr_in ) ); serveraddr.sin_family = AF_INET; memcpy( (char*)&serveraddr.sin_addr, (char*)host->h_addr, sizeof( struct in_addr ) ); serveraddr.sin_port = htons( port ); if( connect( sockfd, (struct sockaddr *)&serveraddr, sizeof( struct sockaddr_in ) ) < 0 ) { printf("Connect erreur.\n"); exit( -1 ); } write( sockfd, str1, strlen( str1 ) ); write( sockfd, str2, strlen( str2 ) ); while( (nb = read( sockfd, buffer, BUFSIZ-1 ) ) > 0 ) { buffer[nb] = '\0'; printf("read (%d): %s\n", nb, buffer ); } close( sockfd ); return 0; }