2010-06-18 96 views
21

我不知道如何最好地解決我的問題。我有一個在遠程機器上運行的服務,接收並處理UDP數據包。我希望服務能夠將這些數據包重新發送給任何想要它們的人(可能是沒有人的,通常是一臺機器,但可能更多)通過互聯網的UDP組播?

我認爲UDP多播是理想的 - 該服務可以發送到多播組,並且無論多少個接收者已經註冊,或者甚至沒有註冊。

不過,我希望能夠我收集這是近了,就不可能用UDP多播訪問此通過互聯網和。有沒有另外一種方法可以用來實現這一點?

如果相關,我的兩個客戶端和服務都寫在C#。

回答

20

一般來說,這是不可能的,因爲多播數據包不會被路由。

有一些技巧來解決這個(DVMRP,MOSPF等),但它們都需要,你可以配置所有的服務器和客戶端之間的路由器(或創建一個隧道)。有多播支持的骨幹網絡(Abilene,Mbone),但這些網絡對於大學等是最感興趣的。普通消費者的互聯網沒有多播。

不幸的是,您需要點對點通信。但是你身處公司,互聯網,廣播和電視都是點對點的,無數次傳輸相同的數據。非常浪費帶寬。

+2

MBONE被關閉很久以前,IPv6的組播強制要求,一些ISP具有IPv4的組播支持DVB如德國和英國。 – 2010-06-26 03:54:11

+3

許多服務使用UDP或PGM進行本地多播。如果您需要通過互聯網連接其他網絡(例如遠程站點),則可以使用TCP通道,該通道監聽本地UDP並將通信路由到重新廣播的另一端。這適用於連接兩個辦公室等。如果您需要UDP協助,請參閱以下教程:http://jarloo.com/code/networking/c-udp-multicasting-tutorial/ – Kelly 2011-02-15 02:46:46

11

的優選的方法是使用對等體之間的覆蓋多播,即使用TCP鏈接和執行上述該組播語義。

許多IPv4路由器不支持組播或使其功能,IPv6的任務是支持多播和廣播語義已被刪除。