2010-07-05 17 views
10

我試圖從多播地址接收數據,但對MulticastSocket.receive()的調用會阻塞,直到發生超時。 我做了一些網絡嗅探,發現我的設備(和模擬器)從未發送MulticastSocket.joinGroup請求。 我嘗試從我的PC上運行相同的Java代碼作爲獨立的應用程序,它運行良好。 Android平臺是否可以阻止IGMP加入請求? 以前有人在Android上成功使用過多播嗎?如何在Android上接收多播數據包

我的清單文件包含以下權限:

我正在我的2.1(這兩個模擬器&設備)上的應用程序。

任何想法的人?

謝謝,

回答

4

看起來,在模擬器中沒有適當的多播支持。

這裏是一個錯誤report和相關的thread。它正在修復froyo。

+0

我有一個在Nexus 7平板電腦上收到很好的多播應用程序,但它不能在Jelly Bean上工作。 – PeterPurple 2013-11-29 17:53:35

7

盧卡斯給出了我見過他的博客上最好的解釋和例子:http://codeisland.org/2012/udp-multicast-on-android

總結:
1.您需要的權限:

<uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" /> 
<uses-permission android:name="android.permission.INTERNET"/> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> 


2.你需要一個鎖:

WifiManager wifi = (WifiManager)getSystemService(Context.WIFI_SERVICE); 
    if (wifi != null){ 
     WifiManager.MulticastLock lock = wifi.createMulticastLock("mylock"); 
     lock.acquire(); 
    } 


3.您必須擁有支持接收組播的設備。或者你可以按照他的工作尋找根植設備。

+0

提供的URL是404。正確的url在url結尾沒有'/'。 http://codeisland.org/2012/udp-multicast-on-android – 2016-04-01 09:14:03

相關問題