我正在开发一个在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);
}
我是否遗漏了某些内容以便接收多播地址?
欢迎任何帮助,
答案 0 :(得分:0)
您的UdpClient必须加入多播组才能收听。这不是自动的。
udpClientImage.JoinMulticastGroup(multicastAddress);
有关此方法的详情,请参阅MSDN。
答案 1 :(得分:0)
传递给构造函数的地址是您正在侦听的NIC。传递到Receive
方法的地址是一个过滤器,并进行更新以反映消息的来源。我不认为你想重用那个,我不认为它应该与绑定的NIC相同。