WinSock - Out of Band?
-
Hi!
Wenn ich zu einem HTTP Server verbunden bin, und eine GIF Datei oder änliches herunterlade, gibt es immer das Problem das nach einer gewissen Datensummer die ich heruntergeladen habe, FD_ISSET dann 0 zurückgibt, auch wenn ich bei select als Timeout 10 Sekunden angegeben habe.Habe daraufhin nochmal die WinSock API durchforstet und bin auf setsockopt gelangt. Da steht nun was von out-of-band wo mir meine Intension sagt, das es was damit zu tun hat...
http://www.c-worker.ch/dokuwsck/owinsck/winsock4.htm#4.1.21
Bloß weiß ich dennoch nicht, was out-of-band Data sein soll. Steht da für mich etwas nützliches drin? Wenn nein, irgendwie eine andere Idee wie man dieses Problem verhindern kann? Es geht auf jedenfall, soviel ist klar.
mfg olli
-
ich glaub damit bist du auf dem falschen Weg.
-
Hmm shit, das Problem liegt doch woanders. Nämlich das die Timeouts irgendwie garnicht bei select eingehalten werden. Muss nochmal schauen, ob ich da nicht irgendie einen Null Pointer übergeben habe.
mfg olliEdit: Hmm kann mir jemand sagen, wie ich einen TCP Clienten auf Non-Blocking setzen kann?
Der Socket wir mit socket(AF_INET, SOCK_STREAM, 0) erstellt, und mit connect() mit der entsprechenenden Adresse verbunden.
Prüfe das ganze so mit non-blocking:
FD_ZERO(TNetwork.tFDSRead) FD_SET(iSocket, TNetwork.tFDSRead) FD_SET(iSocket, TNetwork.tFDSRead) If select(0, TNetwork.tFDSRead, Null, Null, tReadTimeout) = SOCKET_ERROR Then Return 0Sorry, ist kein C Code, aber wenn ich das ganze mit Clients mache, die ich mit accept bekomme, geht das verfahren auch so. Bloß eben das ich beim ersten FD_SET den Listen-Socket angebe. TNetwork.tFDSRead ist auf 10 Sekunden gesteltl(funzt wie gesagt bei accept Clients richtig).