Предложить чтение: последовательность кода сервера
// int socket(int domain, int type, int protocol);
sock_t sock = socket(AF_INET, SOCK_STREAM, 0);
if( sock < 0 )
{
perror( "socket failed" );
exit( EXIT_FAILURE );
}
// if wanting to set any socket options (setsockopt())
// this is the place to do so
struct sockaddr_in server;
memset(&server, 0, sizeof(server));
server.sin_family = AF_INET;
server.sin_addr.s_addr = inet_addr( INADDR_ANY );
server.sin_port = htons(8080);
if( bind( sock, (struct sockaddr*) &server, sizeof(server) ) )
{
perror( "bind() failed" );
close( sock );
exit( EXIT_FAILURE );
}
if( listen(sock, 5) )
{
perror( "listen failed" );
exit( EXIT_FAILURE );
}
struct sockaddr_in client;
size_t len = sizeof( client );
while(1)
{
sock_t clientSock = accept(sock, &client, &len);
if( clientSock < 0 )
{
perror( "accept failed" );
continue;
}
// handle client connection
close( clientSock );
}
close( sock );
Примечание: для обеспечения долгосрочной согласованности компьютеру, на котором выполняется этот код, требуется IP-адрес «stati c», а не IP-адрес «Dynami c».