【问题标题】:UDP client multicast addressUDP客户端组播地址
【发布时间】:2014-11-10 20:14:04
【问题描述】:

我正在开发一个在 Nios 处理器上使用 LWIP 发送 UDP 数据包的系统。我已经开发了一个 C# 应用程序来实现接收数据的可视化。

我遇到的问题是在发送到多播地址时在 C# 应用程序上接收数据。在运行 C# 应用程序的 com+uter 上,我能够看到以 IP 225.0.0.1(多播地址)为地址的传入数据包,但我的 C# 应用程序没有收到它们。

C# 应用程序接收发送到网络地址的数据,例如 192.168.0.100 或当数据发送到 255.255.255.255 时(在这种情况下,我可以在两台不同的计算机上运行该应用程序并且都接收相同的数据)。

我已经在论坛上阅读了几个答案并尝试了所有答案。

我目前使用的代码是:

UdpClient udpClientImage;

IPEndPoint RemoteIpEndPoint = new IPEndPoint(IPAddress.Any, 8884);

udpClientImage = new UdpClient(RemoteIpEndPoint);
udpClientImage.EnableBroadcast = true;

IPAddress m_GrpAddr;
m_GrpAddr = IPAddress.Parse("225.0.0.1");
udpClientImage.JoinMulticastGroup(m_GrpAddr);


while (true)
{
    Byte[] receiveBytes = udpClientImage.Receive(ref RemoteIpEndPoint);

    senderIPAddress = RemoteIpEndPoint.Address;
    string returnData = Encoding.ASCII.GetString(receiveBytes);
}

为了接收多播地址,我是否遗漏了什么?

欢迎任何帮助,

【问题讨论】:

    标签: c# udp multicast


    【解决方案1】:

    您的 UdpClient 必须加入多播组才能收听。这不是自动的。

    udpClientImage.JoinMulticastGroup(multicastAddress);
    

    有关此方法的更多信息,请参阅MSDN

    【讨论】:

    • 我已经用 JoinMulticastGroup 进行了测试。我已经用该代码更新了我的问题。
    【解决方案2】:

    传递给构造函数的地址是您正在侦听的 NIC。传递给Receive 方法的地址是一个过滤器,它会被更新以反映消息的来源。我不认为你想重用那个,我认为它不应该和绑定的网卡一样。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-05-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-20
      • 2011-12-15
      相关资源
      最近更新 更多