linux 组播回送问题
在linux下 ip组播可通过setsockopt 设置IP_ADD_MEMBERSHIP 加入组播。通过IP_MULTICAST_LOOP设置数据回送。
一下是测试
在fedroa版linux(内核版本2.6.31.5)运行虚拟机下双网卡加入组播
设置IP_MULTICAST_LOOP许可回送,可以收到同主机eth1和eth2在同一个组播组中可以互相收到数据包。
设置IP_MULTICAST_LOOP禁止回送,同主机eth1和eth2在同个组播组中不会收到彼此的数据包。
以上没有疑问,但是:
原始套接字通过ioctl 设置SIOCADDMULTI 加入组播 通过SIOCADDMULTI加入组播找不到像IP_MULTICAST_LOOP回送许可的相关选项。在x86虚拟机跑fedroa版的linux(内核版本2.6.31.5)下双网卡加入同意组播组没有收到彼此间的数据包。eth1和eth2即使在同一组播组中,如果同主机将通不了信,这不合理啊!!!!
但是在power pc下linux(内核版本2.6.38.8),同主机双网卡加入以原始套接字ioctl方式加入同一组播组中,eth1和eth2彼此间能收到数据包。
问题:如何使以ioctl设置SIOCADDMULTI方式加入组播的方式 和 以setsockopt设置IP_ADD_MEMBERSHIP加入组播方式一样可以控制回送许可?