2010-12-03 5 views
1

J'ai un problème étrange. J'ai un client qui envoie des paquets à mon serveur, mais le socket UDP de mes serveurs ne les reçoit jamais. La même chose se passe dans l'autre sens, si j'envoie et qu'il essaie de recevoir.C# - WireShark détecte les paquets entrants mais l'application ne les reçoit pas

Vérifiez cette image capturée à partir Wireshark: http://img263.imageshack.us/img263/2636/bokus.png

Je VHA lié mon socket UDP à EndPoint 192.168.2.3, qui est l'adresse IP interne du serveur et le port 9998. Le client envoie des données à mon IP, qui devrait ensuite être transmis à la machine du serveur local .. Comme vous pouvez le voir, wireshark détecte clairement les paquets entrants pour 192.168.2.3 avec le port de destination 9998 mais rien n'est délivré!

(... pourquoi est-il dit dans distinct32 BTW port de destination?)

+0

Votre question ne donne aucune indication sur ce qui pourrait se tromper. Il y a probablement un bug dans votre code. – dtb

+0

Je ne sais pas ce qui pourrait éventuellement être faux; le socket UDP se lie au bon EndPoint et reçoitFrom du bon EndPoint. receiveFrom callback n'est jamais déclenché, et j'ai une idée pourquoi cela pourrait être. Qu'est-ce qui pourrait affecter cet autre point que les mauvais EndPoints (que je connais sont corrects)? – KaiserJohaan

+0

Pour votre dernière question: parce que c'est le service (officieux) qui utilise généralement ce port: http://ports.my-addr.com/tcp_port_list-udp_port_list_search_by_number.php?filter=on&protocol=UDP&ports_list=9709-10010 – VVS

Répondre

0

Autre chose à surveiller est assurez-vous que le pare-feu que vous pourriez en cours d'exécution a une configuration de règle pour permettre les communications sur le port 9998.

Si je devais deviner (je devrais voir votre code C# reçu), il semblerait que vous essayiez de recevoir des paquets UDP mais en utilisant le protocole TCP côté client. (Ou je pourrais juste mal comprendre une partie du texte de votre capture d'écran.)

Il n'est pas nécessaire d'écouter une connexion lorsque vous utilisez UDP. Les paquets UDP n'ont pas de protocole de connexion/déconnexion. Ils ne garantissent pas non plus que les paquets sont reçus dans le même ordre que celui où ils ont été envoyés. Essayez d'utiliser quelque chose le long de ces lignes dans votre client C# et de voir si vous obtenez des données.

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

Bonjour, Non, il ne fonctionne pas :(Je ne sais pas pourquoi il dosn't, TCP fonctionne bien mais pas UDP. – KaiserJohaan

Questions connexes