C#应用根本不接收UDP数据(C# application simply not receiving

2019-10-18 04:58发布

我试图做一些很简单的不工作:以我的C#应用​​程序,我只是想监听特定端口上的UDP包。 使用Wireshark我可以看得很清楚,我想要的包都收到完美的罚款(CRC,一切都OK)。

然而,没有任何代码的我在互联网上找到工作。 例如,这一个failes还有:

    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));

我会有关可能解决这个问题的任何想法非常高兴。 非常感谢你!

Answer 1:

该代码是罚款和工作 - 我测试。

你需要等待接收到的数据, Client对象只存在ReceiveAsync

试着增加Thread.Sleep(10000)

编辑:
Thread.Sleep(1000)是不是因为它阻塞线程很好的做法。
这取决于你试图解决的问题/箱。 你可能有一些那种处理多个TCP连接的引擎,或数据处理的,所以你可以说在缓冲区中的数据进行一些其他线程上下工夫。

如果您共享您正在试图解决这个问题,也许可以提供更好的答案也可以看到从代码示例MSDN - UdpClient.BeginReceive



Answer 2:

我发现这个线程在这里

接收连续使用udpClient消息

可能这会有所帮助。

  1. 你应该不会显示一个消息框,想想一个调试输出。
  2. 保存您直接输入接收后,为了避免阻塞网络。


文章来源: C# application simply not receiving UDP data
标签: c# udp ethernet