2010-03-28 4 views
11

Ich entwickle eine Java-Schnittstelle zwischen einem Streaming-Server und einem Flash-Client. Mir ist aufgefallen, dass UDP-Datagramme meine Schnittstelle außer Betrieb erreichen können, selbst wenn beide Prozesse lokal ablaufen.Warum bekomme ich UDP-Datagramme auch bei lokal ausgeführten Prozessen außer Betrieb?

Ist das normal? Ich dachte, da kein Datagramm durch irgendeinen Router oder irgendein Netzwerkgerät gehen muss, sollte das nicht geschehen.

+1

Das ist eine gute Frage, ich interessiere mich auch für mögliche * Ursachen * davon. –

Antwort

7

Eigentlich gibt es keine Garantie für Bestellung und Empfang von UDP-Paketen, auch wenn sie von localhost auf localhost gesendet werden. Nur weil die Spezifikation des Protokolls nichts darüber aussagt.

Da Sie keine Annahmen über sie machen sollten Sie die Verwendung von TCP oder Umordnung zu behandeln, indem eine Sequenznummer unter Verwendung von Ihren Programmen behandelt ..

8

Dies wäre Betriebssystem abhängig. Während Sie ein Betriebssystem nicht angeben konnten, ist es sowieso nicht wichtig. Um portabel zu bleiben, sollten Sie immer voraussehen, dass Ihre Datagramm-Sockets Out-of-Order-Daten empfangen.

+0

+1 für das Antizipationsbit. –

2

Obwohl Sie localhost ausführen, erwarten Sie, dass UDP-Datagramme in der tatsächlichen Bereitstellung nicht in der richtigen Reihenfolge sind.

Wenn Sie sie nacheinander benötigen, versuchen Sie TCP.

0

UDP ist nicht Folge erhalten werden, wie die Plakate oben habe alle gesagt, aber wenn es keine Zwischenrouter gibt, würde ich auch einen Fehler in Ihrem Code vermuten.

+7

Nein. Es liegt wahrscheinlich an Multiprozessor-Pakethandhabung. –

+0

Bitte erläutern Sie diesen Kommentar. – EJP

+14

Wow, habe gerade diesen Kommentar bemerkt. Du hast meinen Namen nicht markiert, also keine Benachrichtigung. Anyway: Betriebssysteme, die die Paketverarbeitung beschleunigen, indem sie die Arbeit auf mehrere Kerne verteilen, haben möglicherweise die UDP-Pakete auf verschiedenen Kernen verarbeitet und sie in der Warteschlange für die Anwendung außerhalb der Reihenfolge abgelegt. –

Verwandte Themen