我有一个C#应用程序可以在多台机器上工作,但由于某种原因,不适用于另一台机器。全部是Windows XP。如何可以通过wireshark接收udp广播数据包但不是套接字监听器
我只需打开一个端口,侦听:
void Open()
{
var myIpAddress = UdpComm.GetPcIpAddress(target);
listenEndPoint = new IPEndPoint(myIpAddress, RemotePort);
System.Windows.Forms.MessageBox.Show("Creating listener: " + target.ToString() + " - " + listenEndPoint.ToString());
_client = new UdpClient(listenEndPoint);
_client.EnableBroadcast = true;
_client.BeginReceive(ReceiveCallback, null);
}
public void ReceiveCallback(IAsyncResult ar)
{
System.Windows.Forms.MessageBox.Show("Data received");
}
当我运行程序时,我看到Open方法成功运行,并且该地址和端口看起来是正确的。
当我在Wireshark上看到这一点时,我也看到数据正确地从远程地址发送,但我从来没有看到回调消息框。
我没有任何错误被抛出。什么可能导致数据显示在Wireshark上,但不是在我的应用程序中的任何想法?
“我没有任何错误被抛出。” - 没有尝试/抓住吞咽错误? –
Open方法有一个try块,但catch块会弹出一个消息框,但第一件事是异常。 – John
在异步回调中显示消息框是一个坏主意。对于我们所知道的,它可能实际上被显示,但它隐藏在另一个窗口后面。它不会再次显示,也不会显示EndReceive调用。 –