Android MulticastSocket 组播

现象

MulticastSocket 发送组播消息,一些手机上可以发送、接收  组播 消息,有些手机不可用

分析

     1>.能正常发送接收的手机,向组播地址发送了组播消息后,同时会向组播地址发送一个  IGMP v2的协议


Android MulticastSocket 组播_第1张图片

2>.能发送,接收不到组播消息的手机设备,可以发现设备没有向组播地址发送IGMP协议


Android MulticastSocket 组播_第2张图片

3>.而查看手机设备,在   /proc/net/  目录下,有igmp文件的设备会发送IGMP协议,能正常完成组播消息收发,而没有igmp文件的,就是不能完成组播消息收发的。igmp是IPv4下的协议文件,igmp6是IPv6的协议。可以看到所有设备都支持IPv6的igmp


Android MulticastSocket 组播_第3张图片

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

Android App用MulticastSocket监听组播,为什么连接到不

Many devices have multicast disabled in the kernel

你可能感兴趣的:(Android MulticastSocket 组播)