ich benutze 2 Computer mit einer Anwendung zum Senden und Empfangen von UDP-Datagrammen.
Es gibt keine Flusskontrolle (ICMP deaktiviert)
häufig, wenn ich eine Datei als udp Datagramme über die Anwendung sende, bekomme ich 2 Pakete, die ihre Reihenfolge ändern und dafür - packetloss.
gibt es eine Möglichkeit, um sicherzustellen, dass Winsock und send () die Pakete auf die gleiche Weise senden, wie sie dort angekommen sind?
oder macht das OS das? ie ist deaktiviert und eine Art Firewall und es ist kein Hardwareschalter zwischen den Computern angeschlossen (sie sind direkt verdrahtet).
Netzwerkgerätekonfiguration benötigt?
Danke
UDP ist ein leichtgewichtiges Protokoll, das per Entwurf keine Dinge wie Paketsequenzierung behandelt. TCP ist eine bessere Wahl, wenn Sie eine zuverlässige Paketzustellung und -sequenzierung wünschen.
UDP ist im Allgemeinen für Anwendungen ausgelegt, bei denen der Paketverlust akzeptabel oder vorzuziehen ist gegenüber der Verzögerung, die TCP erleidet, wenn es Pakete erneut anfordern muss. UDP wird daher häufig für das Medienstreaming verwendet.
Wenn Sie UDP nur eingeschränkt verwenden können, müssen Sie eine Methode entwickeln, mit der Sie die Out-of-Sequence-Pakete identifizieren und neu ordnen können.
UDP garantiert nicht, dass Ihre Pakete in der richtigen Reihenfolge ankommen. (Es garantiert nicht einmal, dass Ihre Pakete überhaupt ankommen.) Wenn Sie diese Robustheit benötigen, sind Sie mit TCP besser dran. Alternativ könnten Sie Sequenzmarker zu Ihren Datagrammen hinzufügen und sie am anderen Ende neu anordnen, aber warum das Rad neu erfinden?
Gibt es eine Möglichkeit, sicherzustellen, dass winsock und send () die Pakete auf die gleiche Weise senden, wie sie dort angekommen sind?
Es heißt TCP.
Alternativ versuchen Sie ein zuverlässiges UDP-Protokoll wie UDT . Ich nehme an, Sie könnten auf einer kleinen eingebetteten Plattform sein, also wollen Sie ein kompakteres Protokoll wie Bell Labs RUDP .
Es gibt keine Flusskontrolle (ICMP deaktiviert)
Sie können Ihre eigene Flusskontrolle mit UDP implementieren:
Weitere Einzelheiten finden Sie unter Fensterprotokoll verschieben .
[Dies wäre zusätzlich zu mit einer Sequenznummer in den von Ihnen gesendeten Paketen.]