想象一下有进程A
和进程B
和C
,我希望所有进程都将消息多播到端口X.Y.Z.W
上的组P
,A
同时在该组上收听这些消息。 A
是否可以在不接收来自B
和C
的情况下接收来自A
和B
的消息?换句话说,如果我禁用环回(为了让C
不接收它正在组播的消息),它是否仍然会收到来自X.Y.Z.W
和P
的消息,或者这会有效地导致它甚至不再在端口{{1}}上收听{{1}}了吗?
答案 0 :(得分:1)
是的,它会像你描述的那样工作。我们在RSP [1]中以完全相同的方式在任何可靠的多播中使用它。
[1] http://www.equalizergraphics.com/documents/design/multicast.html#RSP
答案 1 :(得分:0)
从文档中我可以看出,IP_MULTICAST_LOOP
选项在主机级别运行,而不是在单个套接字上运行。因此,如果禁用它,发送主机上的任何进程都不会收到组播数据包;如果启用它,发送主机上的所有进程都将接收它。
A可以做的是检查它收到的数据包的源IP和端口。如果它们匹配其发送套接字的本地IP和端口,则应忽略它们。