【问题标题】:Listen to UDP message in C#在 C# 中监听 UDP 消息
【发布时间】:2013-11-14 00:54:33
【问题描述】:

我有一个通过端口 4747 发送/广播 UDP 消息的软件,我想在我的 C# 应用程序上获取这些消息。我已经使用了 Microsoft Network Monitor 并捕获了那些 UDP 消息,但是在我的 C# 程序上尝试了一堆东西,却无法获得任何这些消息。 NetworkMonitor 中的消息日志如下: 88922 00:46:57 14/11/2013 862.7592038 MM-B6DD62A 224.74.74.74 UDP UDP:SrcPort = 1053, DstPort = 7474, 长度 = 15 {UDP:1001, IPv4:984}

消息正在从网络中的一台计算机发送到其他计算机。

我期待一些简单的事情:

UdpClient udp = new UdpClient(7474);
udp.BeginReceive(Receive, new object());
 public void Receive(IAsyncResult ar)
    {
        Console.WriteLine("Getting some thing...");
        IPEndPoint ip = new IPEndPoint(IPAddress.Any, 7474);
        byte[] bytes = udp.EndReceive(ar, ref ip);
        string message = Encoding.ASCII.GetString(bytes);
        Console.WriteLine(message);
    }

可以解决我的问题,但没有捕捉到任何东西。

有什么建议吗?

【问题讨论】:

  • 是广播包吗?您可能需要在 UdpClient 上将 EnableBroadcast 设置为 true
  • 目标地址是多写的(这是我在网络监控工具中看到的)。我试过 EnableBroadcast,没有运气...
  • 是的,多播。您可能需要使用 224.74.74.74 地址调用 JoinMulticastGroup (msdn.microsoft.com/en-us/library/2fxkak8t(v=vs.100).aspx)。但是,我从未尝试过,只是按照文档进行。

标签: c# sockets udp


【解决方案1】:

使用多播组仅适用于 IPv6,IPAddress.Any 不是这样,因此无法正常工作。你用的是什么广播地址? 255.255.255.255 往往无法正常工作,因为软件、设备和防火墙通常会不加选择地丢弃如此广泛的广播,但是使用广播到更具体的子网通常可以工作,例如:

192.168.255.255.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-06
    • 1970-01-01
    • 2018-12-04
    • 2015-04-07
    • 1970-01-01
    • 1970-01-01
    • 2011-07-09
    相关资源
    最近更新 更多