ho googlato ma quello che ho trovato non riesco a pcapirlo bene ma soprattutto non riesco a farlo funzionare..
in due parole, il codice che mi ritrovo ora è cosi:
Codice: Seleziona tutto
struct timeval timeout;
int flags,error;
fd_set fd_w;
timeout.tv_sec = TIMEOUT_CONNESSIONE;
timeout.tv_usec = 0;
DescrittoreSocket=socket(AF_INET,SOCK_STREAM,0);
flags = fcntl(DescrittoreSocket,F_GETFL,0);
fcntl(DescrittoreSocket,F_SETFL, flags | O_NONBLOCK);
connect(DescrittoreSocket,(struct sockaddr*) &IndirizzoServer, sizeof(IndirizzoServer));
FD_ZERO(&fd_w);
FD_SET(DescrittoreSocket, &fd_w);
if(select(FD_SETSIZE,0,&fd_w,0,&timeout)==1)
{ ...ok... }il problaema è che se anche la select mi ritorna 1 (1 per successo, 0 per timeout -1 per errore generico) le operazioni che faccio sul socket danno errore, tipo la recv che mi ritorna sempre -1.
qualcuno ne sa qualcosa di piu?
