如果禁用组播环回,是否可以在同一个组播组上发送和接收?

时间:2012-11-17 07:35:36

标签: c++ multicast

想象一下有进程A和进程BC,我希望所有进程都将消息多播到端口X.Y.Z.W上的组PA同时在该组上收听这些消息。 A是否可以在不接收来自BC的情况下接收来自AB的消息?换句话说,如果我禁用环回(为了让C不接收它正在组播的消息),它是否仍然会收到来自X.Y.Z.WP的消息,或者这会有效地导致它甚至不再在端口{{1}}上收听{{1}}了吗?

2 个答案:

答案 0 :(得分:1)

是的,它会像你描述的那样工作。我们在RSP [1]中以完全相同的方式在任何可靠的多播中使用它。

[1] http://www.equalizergraphics.com/documents/design/multicast.html#RSP

答案 1 :(得分:0)

从文档中我可以看出,IP_MULTICAST_LOOP选项在主机级别运行,而不是在单个套接字上运行。因此,如果禁用它,发送主机上的任何进程都不会收到组播数据包;如果启用它,发送主机上的所有进程都将接收它。

A可以做的是检查它收到的数据包的源IP和端口。如果它们匹配其发送套接字的本地IP和端口,则应忽略它们。