UDP客户端多播地址

本文关键字:地址 多播 客户端 UDP | 更新日期: 2023-09-27 18:29:51

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

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

C#应用程序接收发送到网络地址的数据,例如192.168.0.100,或者当数据发送到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);
}

我是不是为了接收多播地址而遗漏了什么?

欢迎任何帮助,

UDP客户端多播地址

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

udpClientImage.JoinMulticastGroup(multicastAddress);

有关此方法的详细信息,请参阅MSDN。

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

尝试在接收系统上禁用rp_filter您可以查看此帖子:UDP多播客户端看不到tcpreplay 生成的UDP多播流量