UDP客户端组播地址

时间:2014-11-10 20:14:04

标签: c# udp multicast

我正在开发一个在Nios处理器上使用LWIP发送UDP数据包的系统。我开发了一个C#应用程序,以允许可视化接收的数据。

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

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

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

我目前使用的代码是:

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

我是否遗漏了某些内容以便接收多播地址?

欢迎任何帮助,

2 个答案:

答案 0 :(得分:0)

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

udpClientImage.JoinMulticastGroup(multicastAddress);

有关此方法的详情,请参阅MSDN

答案 1 :(得分:0)

传递给构造函数的地址是您正在侦听的NIC。传递到Receive方法的地址是一个过滤器,并进行更新以反映消息的来源。我不认为你想重用那个,我不认为它应该与绑定的NIC相同。