Ho scoperto da poco che il socket di default (almeno sotto unix) è bloccante, sto cercando di risolvere il problema con
senza risultati positivi.codice:fcntl(sd,F_SETFL,O_NONBLOCK);
Senza stare a postare tutto il codice vi riassumo il tutto:
creo il socket sd = socket (AF_INET, SOCK_STREAM, IPPROTO_TCP);
lo rendo non bloccante con l'istruzione sopracitata e mi connetto ad un server.
Dopodiché invio e ricevo un messaggio con send() e recv(). Tutto liscio: mando e ricevo il messaggio di risposta dal server.
A questo punto, avendo reso il socket non bloccante, dovrei essere in grado di mandare e ricevere altri messaggi, invece nulla.
Al secondo recv() che faccio, l'int di recv() mi restituisce 0, segno che la connessione dall'altro lato (server) è chiusa.
Un aiutino?
PS: programmo sotto linux