2015-11-04 21 views
1

最近,我改變了我的程序,它使用TCP/IP之前到UDP多播,因爲它使用了很少的資源。在C中有多個網絡的UDP組播#

我遇到的問題是,在幾臺機器上,我計劃使用它,有兩個或更多的網絡卡連接運行。

我可以從程序級別選擇要在多播上連接哪個連接嗎?我嘗試更改系統中的不同設置,例如網絡優先級,但沒有任何工作。

對於多播我使用:

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

當IP是一個從多播範圍(主要230.X.X.X)。

在TCP/IP的情況下,我可以指定特定於特定網卡的IP的EntryPoint,但在這裏看來,這是不可能的,因爲我需要發送多播地址上的數據包而不是在我的機器上。

感謝您提前給予任何幫助。

+1

使用EndPoint:IPAddress ip = IPAddress.Parse(「192.168.1.28」); IPEndPoint ep =新IPEndPoint(ip,Port); UdpClient publisher = new UdpClient(ep);然後綁定,如下面的網頁所示: https://msdn.microsoft.com/en-us/library/ekd1t784(v=vs.110).aspx – jdweng

回答

1

使用多播時,您仍然需要撥打Bind。換句話說,聽衆可以選擇他們監聽的NIC。當您發出消息時,本地網絡堆棧將自動決定需要使用哪些NIC。 UdpClient類使用構造函數中傳遞的數據調用綁定。這需要成爲您的接收端點。請看這裏:https://msdn.microsoft.com/en-us/library/system.net.sockets.udpclient(v=vs.110).aspx。然後,在發送數據時,請使用採用端點參數的Send方法。在那裏傳遞目標地址。