Salve a tutti come esercizio devo realizzare un server iterativo ovvero che accetti una connessione alla volta la gestisca e torni in ascolto sulla stessa porta (non ho ancora fatto il multithreading).
Lo schema funzionale del mio server è il seguente:

- Creazione di una socket -
- Binding della socket specificata -
- Ascolto sulla porta xxxx -
while(1) {
-Accetta connesione ed assegnali un nuovo socket descriptor-
/*codice di benvenuto*/
write(buff);

while(1) {
-Esegui i servizi disponibili un numero indefinito di volte-
-Se il client di disconnette chiudi il socket descriptor assegnatoli-
}

//finito while interno torna ad accettare nuove connessioni
}

Il mio problema consiste nel capire quando il client si disconnette:
1 - il protocollo che devo implementare non prevede che il client invii una stringa "close" o
niente del genere (come invio)

2- devo compilare sotto sistema unix con le seguenti include:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <netdb.h>

In poche parole vorrei riuscire a capire quando il client fa un bel ctrl+c e chiude la connessione in modo da chiudere il socket descriptor, se qualcuno conosce qualche peculiarità utile gli sarei molto grato.