最近,我改变了我的程序,它之前使用TCP / IP进行UDP多播,因为它使用了更少的资源。
我遇到的问题是,在我计划使用它的少数机器上,有两个或更多网络连接正在运行。
我可以从程序级别选择要进行多播的连接吗?我尝试更改系统中的不同设置,例如网络优先级,但没有任何效果。
对于多播,我使用:
UdpClient publisher = new UdpClient(IP, Port);
publisher.Send(data, data.Length);
其中IP是来自多播范围的IP(主要是230.X.X.X)。
如果是TCP / IP之前就是这种情况,我可以在特定IP网络卡上指定EntryPoint,但在这看来,它是不可能的,因为我需要在多播上发送数据包地址而不是我的机器上的地址。
感谢您提前提供任何帮助。
答案 0 :(得分:1)
使用多播时,您仍需要呼叫Bind
。换句话说,监听器可以选择他们监听的NIC。发送消息时,本地网络堆栈将决定自动启动哪些NIC。 UdpClient类使用构造函数中传递的数据调用Bind。这需要是您的接收端点。见这里:switch into the context。然后,在发送数据时,使用带有端点参数的Send
方法。将目标地址传递到那里。