c#应用程序根本不接收UDP数据
本文关键字:UDP 数据 应用程序 | 更新日期: 2023-09-27 18:17:04
我试图做一些非常简单的事情,不工作:与我的c#应用程序,我只是想监听特定端口上的UDP包。使用Wireshark,我可以很好地看到我想要的包被完美地接收(CRC和一切正常)。
然而,我在网上找到的代码都不起作用。例如,下面这个也失败了:
private void ReceiveAsync()
{
UdpClient Client = new UdpClient(new IPEndPoint(IPAddress.Any, 51200));
try
{
Client.BeginReceive(new AsyncCallback(OnReceive), null);
}
catch (Exception e)
{
System.Windows.Forms.MessageBox.Show(e.Message);
}
}
private static void OnReceive(IAsyncResult result)
{
System.Windows.Forms.MessageBox.Show("Simply to tell you that something was received on the port");
}
安装了两个以太网卡。也许这是个问题?但即使我指定了IP地址,也不会改变任何东西。
UdpClient Client = new UdpClient(new IPEndPoint(IPAddress.Parse("10.0.0.2"), 51200));
我很乐意听到任何能解决这个问题的想法。非常感谢!
代码很好,我已经测试过了。
需要等待接收数据,Client
对象只存在于ReceiveAsync
尝试添加Thread.Sleep(10000)
Thread.Sleep(1000)
不是很好的做法,因为它阻塞了线程。
这取决于你要解决的问题/情况。你可能有某种TCP引擎来处理多个连接,或者数据处理,所以你可以把数据放在缓冲区,让其他线程来处理。
我在这里找到了这个线程
使用udpClient连续接收消息
也许这有帮助。
- 你真的不应该显示一个消息框,而应该考虑一个调试输出。
- 接收后直接保存输入,避免阻塞网络