timeout bei connect
-
Hi, gibt es eine Möglichkeit, eine art time für connect zu setzten, dass zum beispiel nach einer sekunde der Versuch, eine Verbindung herzustellen, abgebrochen wird?
Momentan stelle ich die Verbindung wie folgt her:
/* create connection */ if (connect(sock, (struct sockaddr *) &host_addr, sizeof(struct sockaddr)) == -1) { perror ("connect()"); return 0; }
-
Zum Beispiel mit non-blocking sockets und select()
http://www.opengroup.org/onlinepubs/007908799/xsh/fcntl.html
http://www.opengroup.org/onlinepubs/007908799/xsh/select.html
-
sry, ich checks einfach nicht. Kannst du bitte ein Beispiel geben?
-
Hier gibts ein Beispiel dazu: http://www.developerweb.net/forum/showthread.php?p=13486
-
Supper WebNubbi, danke!
-
sagmal, kannst du mir vlt noch sagen was:
arg |= O_NONBLOCK;
macht? Fügt das O_NONBLOCK zu den aktuellen Flags dazu? Wenn ja, sollte es dann nicht eher mit den + gemacht werden als mit | ?
Danke in Voraus
-
Ach ja, und noch eine Frage (du merkst, ich gehe das Beispiel gerade durch ^^):
In dem Beispiel werden die Flags mit
if( fcntl(soc, F_SETFL, arg) < 0) { fprintf(stderr, "Error fcntl(..., F_SETFL) (%s)\n", strerror(errno)); exit(0); }
auf den filehandle übertrage. Dabei wirft es einen Fehler, wenn der return Wert <0 ist. In http://www.opengroup.org/onlinepubs/007908799/xsh/fcntl.html steht aber, dass der Wert alles außer -1 sein kann.
F_SETFL
Value other than -1.Wird hierbei nicht bei einer gültigen Rückgabe von z.N -4 ein Fehler ausgeworfen?
-
Meisters? Könnt ihr mir das erklären?
-
MaxDemian schrieb:
Meisters? Könnt ihr mir das erklären?
Nun mal langsam, kannst Du keine 5 Stündchen warten? Es ist Sonntag...
Also:
macht? Fügt das O_NONBLOCK zu den aktuellen Flags dazu? Wenn ja, sollte es dann nicht eher mit den + gemacht werden als mit | ?
Nein, schau Dir bitte die Grundlagen nochmal an. Hier wird bitweise verodert, das macht man genau so und nicht anders.
Wird hierbei nicht bei einer gültigen Rückgabe von z.N -4 ein Fehler ausgeworfen?
Hm, normalerweise werden da nur positive Zahlen zurückgegeben, egal was in der Doku steht. Aber wenn es Dir anders lieber wäre, dann schreibe das um, wird immer noch funktionieren.
-
Hi Mädels,
noch eine kleine Frage zu diesem Thema:Der Compliler meckert bei mir, er kenne das struct fdset nicht. Ich habe schon überlegt, fdset.h zu includen, aber dann habe ich hereusgefunden, dass fdset.h eigentlich in select.h sein sollte (http://www.lofar.org/software/docxxhtml/FdSet_8h.html)
Nun bin ich ein wenig ratlos... includen?
-
MaxDemian schrieb:
Der Compliler meckert bei mir, er kenne das struct fdset nicht. Ich habe schon überlegt, fdset.h zu includen, aber dann habe ich hereusgefunden, dass fdset.h eigentlich in select.h sein sollte (http://www.lofar.org/software/docxxhtml/FdSet_8h.html)
Nein, da steht nur, dass select.h in FdSet.h inkludiert wird.
edit: Siehe auch http://www.lofar.org/software/docxxhtml/FdSet_8h-source.html
-
crap, sry