/*===============================================*\ 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 int main( int argc, char **argv ) { int sockfd; //-- Server socket file descriptor. struct sockaddr_in serveraddr; int port, nb, clientlen; int clientfd; //-- client socket file descriptor. struct sockaddr_in clientaddr; char buffer[BUFSIZ]; if( argc <= 1 ) { printf("USAGE: server \n"); exit( -1 ); } port = atoi( argv[1] ); if( (sockfd = socket( AF_INET, SOCK_STREAM, 0 )) < 0 ) { printf("Socket erreur.\n"); exit( -1 ); } //-- Initialise l'adresse du socket. memset( &serveraddr, 0, sizeof( struct sockaddr_in ) ); serveraddr.sin_family = AF_INET; serveraddr.sin_addr.s_addr = htonl( INADDR_ANY ); serveraddr.sin_port = htons( port ); if( bind( sockfd, (struct sockaddr*) &serveraddr, sizeof( struct sockaddr_in) ) < 0 ) { printf("Bind erreur.\n"); exit( -1 ); } if( listen( sockfd, 5 ) < 0 ) { printf("Listen erreur.\n"); exit( -1 ); } clientlen = sizeof(struct sockaddr_in); if ((clientfd = accept( sockfd, (struct sockaddr *)&clientaddr, &clientlen )) == -1) { printf("Accept erreur.\n"); exit(-1); } while( (nb = read( clientfd, buffer, BUFSIZ )) > 0 ) write( clientfd, buffer, nb ); close( clientfd ); close( sockfd ); return 0; }