首页 文章

UDP客户端组播地址

提问于
浏览
0

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

我遇到的问题是在发送到多播地址时接收C#应用程序上的数据 . 在运行C#应用程序的计算机上,我能够可视化为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);
}

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

欢迎任何帮助,

2 回答

  • 0

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

  • 0

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

    udpClientImage.JoinMulticastGroup(multicastAddress);
    

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

相关问题