salve a tutti
ho iniziato da poco a studiare i socket in linguaggio C. E già nascono, non tanto problemi, ma piuttosto curiosità:
dopo la creazione del socket e tutto il resto, ci sarà la parte di codice dedicata al send() e recv() dei dati: cioè quando l'host sarà in attesa con la recv():
codice:
//var( alcune, solo quelle necessarie a comprendere il codice )
SOCKET sock_desc;
SOCKET new_sock_desc;
SOCKADDR_IN client_addr;
int recv_byte;
int length_sock= sizeof( SOCKADDR_IN );
char buffer[1024];
...
while( 1 )
{
new_sock_desc= accept( sock_desc, (SOCKADDR*) &client_addr, &length_sock );
printf("connected from %s port %d", inet_ntoa(client_addr.sin_addr), ntohs(client_addr.sin_port) );
send( new_sock_desc, "hello world!\n", 13, 0 );
recv_byte= recv( new_sock_desc, buffer, 1024, 0 );
while( recv_byte > 0 )
{
printf("bytes received: %d\n", recv_byte );
recv_byte= recv( new_sock_desc, buffer, 1024, 0 );
}
close( new_sock_desc );
}
a questo punto, se il client chiude la connessione con l'host come faccio a capire se il socket_client è stato chiuso o no( dal punto di vista dell'host ovviamente )?
per esempio stampare: "socket closed"
grazie in anticipo