#include #include #include #include #include #include #include #include #include #define MYPORT 3490 #define BACKLOG 10 int main( void ) { int sockfd, new_fd; struct sockaddr_in my_addr; struct sockaddr_in their_addr; int sin_size, n, i; if ( ( sockfd = socket( AF_INET, SOCK_STREAM, 0 ) ) == -1 ) { perror( "socket" ); exit( 1 ); } my_addr.sin_family = AF_INET; my_addr.sin_port = htons( MYPORT ); my_addr.sin_addr.s_addr = INADDR_ANY; memset( &( my_addr.sin_zero ), '\0', 8 ); if ( bind( sockfd, ( struct sockaddr * )&my_addr, sizeof( struct sockaddr ) ) == -1 ) { perror( "bind" ); exit( 1 ); } if ( listen( sockfd, BACKLOG ) == -1 ) { perror( "listen" ); exit( 1 ); } while( 1 ) { sin_size = sizeof( struct sockaddr_in ); if ( ( new_fd = accept( sockfd, ( struct sockaddr * )&their_addr, &sin_size ) ) == -1 ) { perror( "accept" ); continue; } printf( "server: got connection from %s\n", inet_ntoa( their_addr.sin_addr ) ); if ( ( i = recv( new_fd, &n, sizeof( n ), 0 ) ) == -1 ) { perror( "recv" ); } else if ( i == 0 ) { fprintf( stderr, "connection closed by peer.\n" ); } else { printf( "Received '%d'\n", n ); } close( new_fd ); } return 0; } /* author: Gustavo Sverzut Barbieri (http://www.gustavobarbieri.com.br) */