C# - WireShark检测传入的数据包,但应用程序没有收到它们

时间:2010-12-03 17:51:02

标签: c# sockets udp wireshark

我有一个奇怪的问题。我有一个客户端发送数据包到我的服务器,但我的服务器UDP套接字永远不会收到它们。反过来也是如此,如果我发送并且他试图接收。

检查此图片,从wireshark捕获: http://img263.imageshack.us/img263/2636/bokus.png

我将我的UDP套接字绑定到EndPoint 192.168.2.3,这是服务器的内部IP,端口9998。 客户端将数据发送到我的IP,然后将其转发到本地服务器计算机。 正如你所看到的,wireshark清楚地检测到目的端口为9998的192.168.2.3的数据包,但没有任何交付!

(...为什么在目标端口中说明了32 btw?)

1 个答案:

答案 0 :(得分:0)

要注意的其他事项是确保您运行的任何防火墙都具有规则设置,以允许在您的端口9998上进行通信。

如果我不得不猜测(需要知道你收到的C#代码),看起来你可能正在尝试接收UDP数据包但在客户端使用TCP协议。 (或者我可能只是误解了你截图的一些文字。)

使用UDP时,无需“侦听”连接。 UDP数据包没有连接/断开协议。它们也不保证按照发送的顺序接收数据包。

尝试在C#客户端中使用这些内容,看看是否有数据。

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