【发布时间】:2011-09-20 00:07:09
【问题描述】:
我有一个 C# 应用程序可以在多台机器上运行,但由于某种原因不能在另一台机器上运行。都是Windows XP。
我只是打开一个端口并监听:
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 上而不是我的应用程序中的任何想法?
【问题讨论】:
-
“我没有抛出任何错误。” - 没有 try/catch 的吞咽错误?
-
Open 方法有一个 try 块,但是 catch 块弹出一个带有异常的消息框,首先。
-
在异步回调中显示消息框是个坏主意。据我们所知,它实际上可能会显示,但它隐藏在另一个窗口后面。它也不会再次显示,没有 EndReceive 调用。