現象
MulticastSocket 發送組播消息,一些手機上可以發送、接收? 組播 消息,有些手機不可用
分析
? ? ?1>.能正常發送接收的手機,向組播地址發送了組播消息后,同時會向組播地址發送一個 ?IGMP v2的協議
2>.能發送,接收不到組播消息的手機設備,可以發現設備沒有向組播地址發送IGMP協議
3>.而查看手機設備,在 ? /proc/net/ ?目錄下,有igmp文件的設備會發送IGMP協議,能正常完成組播消息收發,而沒有igmp文件的,就是不能完成組播消息收發的。igmp是IPv4下的協議文件,igmp6是IPv6的協議。可以看到所有設備都支持IPv6的igmp
4>.在Android系統下,編譯Linux kernel時有一config? CONFIG_IP_MULTICAST ,如果是定制系統在編譯系統的時候配置這個選項 ? CONFIG_IP_MULTICAST=y ?,就能enable組播功能。但是有很多系統廠商在編譯的時候都默認把這個config給disable了。
CONFIG_IP_MULTICAST
adb shell netcfg
adb shell ifconfig eth0
參考:
How can I know if IP Multicast is enabled