我有一個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調用。 –