Pagina 1 di 1

[c / c++] impostare timeout su connect()

Inviato: venerdì 26 settembre 2008, 14:13
da grisson
come da oggetto, come posso fare a impostare un timeout?
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... }
ho tralasciato gli assegnamenti iniziali dell'ip e della porta.
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?

Re: [c / c++] impostare timeout su connect()

Inviato: venerdì 26 settembre 2008, 22:21
da bite
1) Il titolo è "timeout su connect", ma sembra piuttosto che ti interessi il timeout su select. E' così? Se è così, correggi il titolo, avrai più probabilità di ricevere risposte sensate.

2) Che cos'è FD_SETSIZE?

3) Postare un intero programma compilabile potrebbe essere un buon modo per aiutarci ad aiutarti.

Re: [c / c++] impostare timeout su connect()

Inviato: venerdì 26 settembre 2008, 22:29
da grisson
si in realtà volevo semplicemente chiedere come si può mettere il timeout sull'azione di connessione di un socket client.

comunque sospendo un attimo la questione perchè sto dando un occhiata alle librerie asio...