2010-12-03 9 views
1

Ich habe ein seltsames Problem. Ich habe einen Client, der Pakete an meinen Server sendet, aber mein Server UDP-Socket empfängt sie nie. Dasselbe passiert umgekehrt, wenn ich sende und er versucht zu empfangen.C# - WireShark erkennt eingehende Pakete, aber Anwendung empfängt sie nicht

prüfen dieses Bild, von wireshark erfasst: http://img263.imageshack.us/img263/2636/bokus.png

I hav meine UDP-Socket EndPoint 192.168.2.3 gebunden, die die interne IP-Adresse des Servers und Port 9998. Der Client sendet Daten an meine IP-Adresse, die dann an den lokalen Server-Rechner weitergeleitet werden soll. Wie Sie sehen, erkennt Wireshark eingehende Pakete eindeutig für 192.168.2.3 mit Ziel-Port 9998, aber nichts wird geliefert!

(... warum sagt es distinct32 btw in Ziel-Port?)

+0

Ihre Frage gibt keine Ahnung, was falsch sein könnte. Es ist wahrscheinlich ein Fehler in Ihrem Code. – dtb

+0

Ich weiß nicht, was möglicherweise falsch ist; Der UDP-Socket bindet sich an den richtigen EndPoint und receivesFrom vom rechten EndPoint. receiveFrom callback wird nie ausgelöst, und ich habe eine Idee, warum das so sein könnte. Was könnte das anders als falsche Endpunkte (von denen ich weiß, dass sie korrekt sind) beeinflussen? – KaiserJohaan

+0

Zu Ihrer letzten Frage: weil das der (inoffizielle) Service ist, der normalerweise diesen Port benutzt: http://ports.my-addr.com/tcp_port_list-udp_port_list_search_by_number.php?filter=on&protocol=UDP&ports_list=9709-10010 – VVS

Antwort

0

Etwas anderes zu beachten ist sicherzustellen, dass jede Firewall Sie laufen könnte eine Regel-Setup hat Kommunikation auf Port 9998.

zu ermöglichen

Wenn ich raten musste (müsste sehen, dass Ihr empfangener C# -Code zu wissen ist), sieht es so aus, als würden Sie versuchen, UDP-Pakete zu empfangen, aber das TCP-Protokoll auf der Client-Seite verwenden. (Oder ich könnte nur einen Teil des Textes Ihres Screenshots missverstehen.)

Theres keine Notwendigkeit, für eine Verbindung zu "hören", wenn Sie UDP verwenden. UDP-Pakete haben kein Connect/Disconnect-Protokoll. Sie garantieren auch nicht, dass Pakete in derselben Reihenfolge empfangen werden, in der sie gesendet werden.

versuchen Sie etwas in diese Richtung in Ihrem C# -Client und sehen Sie, ob Sie Daten erhalten.

var udpClient = new System.Net.Sockets.UdpClient(9998); 
Byte[] receiveBytes = udpClient.Receive(ref RemoteIpEndPoint); 
+0

Hallo, Nein, es funktioniert nicht :(Ich habe keine Ahnung, warum es nicht, TCP funktioniert gut, aber nicht UDP. – KaiserJohaan

Verwandte Themen