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

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Avatar utente
grisson
Prode Principiante
Messaggi: 86
Iscrizione: domenica 27 agosto 2006, 23:06

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

Messaggio 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?
Avatar utente
bite
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 3798
Iscrizione: sabato 19 maggio 2007, 22:10

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

Messaggio 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.
Avatar utente
grisson
Prode Principiante
Messaggi: 86
Iscrizione: domenica 27 agosto 2006, 23:06

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

Messaggio 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...
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 2 ospiti