在C#中使用多个网络的UDP多播

时间:2015-11-04 13:45:17

标签: c# sockets udp multicast

最近,我改变了我的程序,它之前使用TCP / IP进行UDP多播,因为它使用了更少的资源。

我遇到的问题是,在我计划使用它的少数机器上,有两个或更多网络连接正在运行。

我可以从程序级别选择要进行多播的连接吗?我尝试更改系统中的不同设置,例如网络优先级,但没有任何效果。

对于多播,我使用:

UdpClient publisher = new UdpClient(IP, Port);
publisher.Send(data, data.Length);

其中IP是来自多播范围的IP(主要是230.X.X.X)。

如果是TCP / IP之前就是这种情况,我可以在特定IP网络卡上指定EntryPoint,但在这看来,它是不可能的,因为我需要在多播上发送数据包地址而不是我的机器上的地址。

感谢您提前提供任何帮助。

1 个答案:

答案 0 :(得分:1)

使用多播时,您仍需要呼叫Bind。换句话说,监听器可以选择他们监听的NIC。发送消息时,本地网络堆栈将决定自动启动哪些NIC。 UdpClient类使用构造函数中传递的数据调用Bind。这需要是您的接收端点。见这里:switch into the context。然后,在发送数据时,使用带有端点参数的Send方法。将目标地址传递到那里。