2017-06-16 93 views
1

我想要開發使用UDP協議發送數據包的客戶端在Java Web應用程序發送通過互聯網多投包在Java中

我需要直接向每個客戶端發送數據包。

的Java提供了一個名爲MulticastSocket時類,它擴展UDP。這可以通過網絡將數據包發送給多個客戶端。

但它只發生在本地網絡而不是「互聯網」。

有什麼辦法通過互聯網發送組播數據包嗎? 如果有可能解釋它並解釋我可以如何在Java中實現它。

我發現了一些像IGMP協議......但我認爲它是在MulticastSocket中開發的。

+0

我確定需要在客戶端添加防火牆異常。也許你需要一個多播路由器來發送多播數據包。 – TBridges

+0

@Tim,但我永遠無法理解我如何通過互聯網發送多播數據包。由於多播組ip必須在D類中,我認爲這個IP clasa不能從Internet訪問! –

+0

您是否介意在www.iana.org上分享您的解決方案?謝謝 – ehe888

回答

0

當發送多播數據包,如果你希望他們穿過一個或多個路由器需要設置輸出數據包的TTL爲至少與你希望通過的路由器的數目一樣大。您可以通過MulticastSocketsetTimeToLive()方法進行設置。

IGMP消息由多播接收器發送,讓路由器知道向何處轉發多播通信。當您通過joinGroup方法之一加入多播組時,您無需顯式發送數據包,因爲操作系統會自動執行該數據包。

然而,通過公共互聯網發送組播的主要問題是,大多數路由器沒有配置爲允許多播流量通過他們。默認情況下,它們將丟棄IGMP數據包而不是轉發它們。

有一個實驗性的互聯網骨幹網組播稱爲MBONE,但我不相信這是在使用了。

因此,不能,無論語言如何,您都無法通過公共Internet發送多播。

+0

嗨,兄弟謝謝你的回答。我在www.iana.org上找到了我的解決方案,謝謝! –