C#中具有多个网络的UDP多播

本文关键字:网络 UDP 多播 | 更新日期: 2023-09-27 18:20:28

最近,我将以前使用TCP/IP的程序更改为UDP多播,因为它使用的资源要少得多。

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

我可以从程序级别选择在哪个连接上进行多播吗?我试着改变系统中的不同设置,比如网络优先级,但都没用。

对于多播,我使用:

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

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

在以前的TCP/IP情况下,我可以在特定于某个网卡的IP上指定EntryPoint,但在这里,这似乎是不可能的,因为我需要在多播地址上发送数据包,而不是在我机器的地址上。

感谢您提前提供的帮助。

C#中具有多个网络的UDP多播

使用多播时,您仍然需要调用Bind。换句话说,侦听器可以选择在哪个NIC上侦听。当您发送消息时,本地网络堆栈将决定需要自动在哪些NIC上发出消息。该UdpClient类使用构造函数中传递的数据调用Bind。这需要成为您的接收端点。请参见此处:https://msdn.microsoft.com/en-us/library/system.net.sockets.udpclient(v=vs.110).aspx。然后,在发送数据时,使用采用端点参数的Send方法。把目标地址传进去。