Kann ich die Wartezeit eines connect()-Aufrufs ändern?
-
Ein Connectaufruf der unglücklich endet blockiert das Programm immer 10 Sekunden lang bis endlich connect() zurückkehrt.
Gibt es eine MÖglichkeit, connect()'s warte zeit zu verkürzen, sodass ein in 1 Sekunde nciht geschaffter connect einfach als nciht möglich angesehn wird?
-
Vielleicht wären nonblocking sockets fürdich die Lösung?!
-
Mein ganzes System basiert nun auf blocking sokets. Ist auch gut so. Blocking sockets sind besser...
Wenns nicht geht, hab ich Pesch gehabt und das Programm friert beim fehl-connectversuch für 10 sekunden ein. Egal. Es wird ehh kaum passieren dass ich zu falschen addressen connecte.. wäre aber schön gewesen wenns ginge.

-
Dann mach die Blocking Sockets doch in einen eigenen Thread.
Oder was gibt es dagegen auszusetzen?
-
Evtl. setsockopt mit SO_SNDTIMEO - so wie es aussieht hilft das bei deinem Problem aber nichts

Aber ich kann eh nur Vermutungen anstellen, da ich noch nie etwas mit sockets gemacht habe - evtl. weiß da jemand anderes noch eine Lösung

-
hmmmmmmm schrieb:
Dann mach die Blocking Sockets doch in einen eigenen Thread.
Oder was gibt es dagegen auszusetzen?Klasse Vorschlag. Aber connect in nen externen Thread zu packen bringts nciht, da ich dann trotzdem warten muss!
You know what I mean...
-
Hallo,
für connect sieht die WinSock-API keine Möglichkeit vor, in den time-Out einzugreifen, wie man auch für viele andere Funktionen keine Möglichkeit dafür hat. Will man einen time-out für solche Funktionen realisieren, muß man nicht-blockierende Sockets verwenden, siehe dazu auch
http://tangentsoft.net/wskfaq/newbie.html#timeout
MfG