delete[] Frage

03/27/2012 12:33 Nightblizard#31
Mit ioctlsocket kannst du die Anzahl der Bytes im Buffer herausfinden.
Code:
unsigned long numBytes = 0;
ioctlsocket(socket, FIONREAD, &numBytes);
03/27/2012 15:49 xNopex#32
Quote:
FIONREAD returns the amount of data that can be read in a single call to the recv function, which may not be the same as the total amount of data queued on the socket.
Ich seh leider noch nicht, wie das dann das Problem löst. Vllt. steh ich aufm Schlauch.
03/27/2012 16:51 Nightblizard#33
Habe ich das Problem falsch verstanden? Er will den gesamten Buffer auslesen, oder nicht?

Das heißt er muss so lange ioctlsocket aufrufen und dann numBytes auslesen bis numBytes == 0.
03/27/2012 17:04 xNopex#34
Nene passt schon, jetzt hab ichs auch begriffen. Hab nich dran gedacht, dass man die Funktion auch mehrmals aufrufen kann :rolleyes:
03/27/2012 19:12 MrSm!th#35
Quote:
Originally Posted by Nightblizard View Post
Nein, recv gibt die Anzahl der empfangenen Bytes zurück. Gibt es es 0 zurück, dann hat der Client die Verbindung unterbrochen.


Siehe: [Only registered and activated users can see links. Click Here To Register...]
War wohl noch ein bisschen bei HTTP, denn da schließt der Server die Verbindung nach der Response.
Stimmt, was hab ich da eigentlich für nen Müll gefaselt Q_Q recv ist ein Blocking Call, ergo bleibt man so lange hängen, bis Daten ankommen oder die Verbindung geschlossen wird.