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

UDP Multicast with multiple networks in C#

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

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

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

对于多播我使用:

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

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

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

提前感谢您的帮助。

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