TCP und recv
-
Hi!
Ich habe des öfteren gelesen, dass man ein recv() auf einem TCP socket so lange aufrufen muss, bis alle erwarteten Bytes gelesen wurden.
Aber wie macht man es, wenn man nicht weiß, wieviel man empfangen wird? In meinem Fall kann ich mir auch nicht aussuchen, was ich empfange, und somit auch keine Länge mitsenden.
Ich könnte mir das nur mit einem timeout vorstellen, das wäre aber doch reichlich umständlich und vor allem total unzuverlässig.
-
Wenn du nicht weißt wieviel du empfangen wirst, könnte es extrem schwierig werden.
Auch der Timer wird dir nicht viel nützen, da du ja nicht weißt wie lange du warten musst bis alles da ist, wenn du nicht weißt wie viel es sein wird.
Ich sehe da keine machbare Lösung.
-
Verstehe, danke.
-
Ein Termination-Zeichen wäre ne Idee. zb
InfoInfoInfoInfoInfoInfoInfoInfoInfoInfoInfoInfoInfoInfoInfoInfoInfoInfoInfoInfoInfoInfoInfoInfoInfoInfoInfoInfoInfoInfoInfoInfoInfoInfoInfoInfoInfoInfoInfoInfoInfoInfoInfo%%
Und du liest bis %% auftaucht. HTTP wartet zb auf die Sequenz \r\n\r\n
-
Receiver schrieb:
In meinem Fall kann ich mir auch nicht aussuchen, was ich empfange, ...
Hat sich aber erledigt.