john: Linux , C++ , TCP-Socket

Beitrag lesen

Und wenn du den Puffer vergrößerst? Schiefgehen kann damit ja nichts, weil recv soviel liest, wie kommt und nicht so lange wartet, bis der Puffer voll ist.

Der Puffer ist dann immer noch zu klein.
Man könnte ihn 128 MB gross machen und dann kommt plötzlich eine Datei die 129 MB gross ist. Also das kann nicht die Lösung sein.

Soweit ich die Manpage zu recv(2) richtig gelesen und meine eigenen Programmierbeispiele dazu richtig verstanden habe, bedeuten die Rückgabewerte von recv sowie recvfrom:

-1: Oh, ein Fehler, bitte schau in errno nach
≥ 0: Anzahl der gelesenen Bytes

Wobei ich 0 so interpretiere, dass es nichts mehr zu lesen gibt, aber kein Fehler aufgetreten ist. Das sollte doch deine Abbruchbedingung sein, oder?

Ja, das habe ich mir auch gedacht. Habe auch sämtliche Tutorials die man mit Google so findet durchgelesen in vielen findet man eine ähnliche Konstruktion wie ich sie habe. Aber es "funktioniert nicht".
Die Daten werden Empfangen aber irgendwann komm recv() nicht mehr zurück und das genau wenn eigentlich die Rückgabe 0 sein sollte.

Ich kann mir das nicht erklären. Mache ich etwas falsch? Wenn ja, was?
Hilft es wenn ich einen größeren Codeteil poste?