2009-05-22 10 views
1

Hey Leute ich brauche Leute, die Lösung zu erraten :(.UDP sperren?

ich UDP-Sockets verwende und was ich tue Spielereingabe sendet die etwa 8, 4 oder Bytes was auch immer. Ich Recvfrom und sendto verwende. Es funktioniert für Minuten, dann wird es nach dem Zufallsprinzip sperren. Dies könnte jedoch wegen meiner App Logik sein, aber ich möchte wissen, ob jemand Erfahrung mit diesem und es ist ein UDP/Netzwerk-Problem. Mein Code ist hier http://www.pastie.org/486583, aber ich möchte vor allem wissen was ich sehe in kann dieses Problem zu beheben, basierend auf Ihren Erfahrungen.

Antwort

2

Verwenden Wireshark, um herauszufinden, welche Seite ausfällt.

ist es t Der Absender sendet nicht?

Oder wird der Empfänger nicht empfangen?

0

Ist Ihre GetInput() -Funktion erwartet sendTo und recvFrom immer abgeschlossen? Es ist nicht garantiert, dass UDP Ihre Nachrichten sendet oder empfängt oder in welcher Reihenfolge die Nachrichten ankommen. Ich denke, dass Ihre Timeouts auch auf unendlich eingestellt sind, was ab und zu passiert, eine Nachricht schlägt fehl und Sie warten unendlich lange auf eine Nachricht, die bereits verloren ist.

+0

könnte es im LAN verloren gehen? mein Router ist grandios. –

+0

Egal, die Art des Netzwerkverkehrs und UDP ist, dass Nachrichten verloren gehen. Die physische Verbindung zwischen Computer und Router führt zum Verlust des Signals. Versuchen Sie UDP, einen Server auf halbem Weg um die Welt, und Sie werden viel mehr Paketverlust sehen. TCP kompensiert und garantiert die Zustellung. Wenn Sie UDP verwenden, müssen Sie diese Funktionen selbst implementieren. – CookieOfFortune

0

Was bedeutet "sperren"?

Beachten Sie, dass das Netzwerk erlaubt wird (drop) UDP-Pakete zu verlieren: Ihr Protokoll sollte erlauben, einige gelegentlich verloren, oder bereit sein, erneut zu übertragen.

0

Was bedeutet "eingesperrt" und wer wird eingesperrt? Sie haben die Rückgabewerte von "recvfrom" & "sendto" Systemaufrufe nicht überprüft. Haben Sie versucht, Wireshark auszuführen, um das Verhalten zu beobachten?