UDP Multicast試驗

最近試着給DTPLink網絡通訊層加上UDP Multicast(IP組播)來實現類似uPNP的SSDP和Bonjour的mDNS功能。Multicast本是用來實現網絡上屬於同一組播組的主機間通訊,可以實現局域網內和因特網上的組播通訊。網上示例代碼很多,但我的試驗基本沒有成功過。在試驗過程中發現TP-Link低端家用路由器並不支持組播報文的轉播,所以跨因特網的組播基本上是無法驗證的。在Amzon EC2的Instance間也嘗試了一把,最後發現Amzon EC2的官方文檔中也指明瞭不支持組播。還嘗試了局域網內的組播,理論上局域網內的組播是不需要到路由器上轉發的,遺憾的是不論怎麼嘗試都沒有成功。。。。百思不得其解。最後我試着用uPNP的"239.255.255.255:1900"地址試了一把,發現能夠從開啓upnp功能的路由器上得到SSDP協議的信息,同時偵聽在該地址上的兩個無線設備(一臺筆記本+一臺Android手機)間能夠實現組播通訊,但是並不穩定,接收端有時收不到報文,從這個結果來看,家庭網絡內部如果要用上組播技術,要麼需要一個功能更高級的路由器(更多錢),要麼嘗試用uPNP。Multicast(組播或多播)雖然較Broadcast(廣播)有技術上的優勢,但還是增加網絡通訊負擔,所以即使家用路由器支持組播轉發,在ISP那端也很有可能把組播轉發功能給關了。因此組播在實際應用中還是些限制。本次試驗的代碼來自這裏

注意,Android系統爲了省電,默認情況是關閉組播通訊的,用multicastsocket編程時要事先通過Wifimanager得到MulticastLock方可操作。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章