2014-11-05 140 views
1

场景:Linux的插座&IP_ADD_SOURCE_MEMBERSHIP

过程1创建套接字并将预订使用IP_ADD_SOURCE_MEMBERSHIP选项的多播组[组:224.0.0.30来源:192.168.0.1设备中:eth0]。将套接字绑定到224.0.0.30:5555。

进程2创建一个套接字并使用IP_ADD_MEMBERSHIP选项[Group:224.0.0.30 Device:eth0]订阅多播组。将套接字绑定到224.0.0.30:5555。

这两个进程都在同一个盒子上同时运行。

源IP 172.10.1.1发送一个包含多播目的地224.0.0.30:5555的数据包。

进程1是否会收到组播数据包?或者它会被内核过滤掉吗?

谢谢。

回答

1

man 7 ip

IP_ADD_SOURCE_MEMBERSHIP (since Linux 2.4.22/2.5.68) Join a multicast group and allow receiving data only from a specified source. ,,,

这意味着,你的第一个程序将不会收到来自源172.10.1.1发送的数据包。 但进一步阅读:

...此选项可以多次使用,以允许从多个来源接收数据。

,这可能对您有用。