recv() problem

Resident Evil

Grünschnabel
hallo,

ich habe eine recv-funktion die ankommende Daten in einen Char-Array schreibt.

Wenn ich ins 3. Parameter schreibe, das 1000 Zeichen empfangen werden sollen,

aber nur z.B. 83 gesendet wurden, dann wartet das Programm ja, bis die nächsten 17

Zeichen gesendet wurden und beendet dann erst die recv-funktion

Wisst ihr wie man recv() beenden kann, wenn keine Zeichen mehr empfangen werden? :confused:

PHP:
rc = recv(s, Buffer, 100, 0); // Wartet bis 100 Zeichen mit Socket 's' empfangen wurden
 
Also recv() beendet sich, sobald die im 3. Parametern angegebenen Bytes empfangen wurden oder keine Bytes mehr gesendet werden.
 
Wenn ich ins 3. Parameter schreibe, das 1000 Zeichen empfangen werden sollen, aber nur z.B. 83 gesendet wurden, dann wartet das Programm ja, bis die nächsten 17 Zeichen gesendet wurden und beendet dann erst die recv-funktion
Also so verhält sich das eigentlich nicht. Wenn weniger Bytes vorhanden sind, als im 3. Parameter angeben, wird nur die tatsächliche Anzahl gelesen und recv() kehrt dann zurück. Das Problem entsteht nur, wenn recv() aufgerufen wird und es sind gar keine Bytes zum Lesen da. Dann nämlich blockiert recv() solange, bis es was "zu Holen" gibt. Um zu Testen, ob Bytes zum Lesen anstehen, kann der select()-Befehl verwendet werden.

Gruß
MCoder
 
Zuletzt bearbeitet:
Zurück