recv in Verbindung mit UDP - Problem beim Empfang
-
Hallo Forum,
kann mir bitte einer das Verhalten von recv erläutern. Ich habe folgendes Problem:
ich habe einen UDP-Client und UDP-Server, die Verbindung ist bereits aufgebaut und es wurden auch schon Daten ausgetauscht. Nun beginnt der "eigentliche" Datentransfer, es müssen große Mengen an Daten übertragen werden. Ich arbeite hier im blocking mode, so dass die recv-Funktion erst dann zurückkehrt, wenn auch Daten angekommen sind oder wenn sie in einen timeout läuft.
Nun habe ich festgestellt, dass der Client nicht alle Daten mitbekommt. Ich sehe also mit einem Packet-Sniffer auf dem Server-Rechner, das die Daten abgeschickt wurden, auf dem Client-Rechner zeigt der Sniffer ebenfalls, dass die Daten angekommen sind. Aber meine recv kehr nicht zurück.
Meine Vermutung liegt darin, dass auf der IP-Ebene nicht alle Packete (Fragmente) hochgereicht werden zum UDP. Da das IP-Protokoll aber weis, wieviele Daten kommen werden (anhand des Fragmentoffsets), wartet UDP solange, bis eben alle Daten ankommen.
Wenn es aber so ist, dann kann meine Anwendung ja nicht funktionieren, da ich bei jedem Timeout die Kommunikation abbreche.
Hoffe ich konnte das PRoblem einigermaßen gut schildern und freue mich auf jeden Hinweis von Euch.
Danke.
-
Die Leitung ist aber Hardwaremäßig in Ordnung?
Und hast du das ganze mit Multithreadign gemacht?
-
Die Leitung ist auf jeden Fall in Ordnung und Kommunikation läuft auch in einem Sub-Thread.