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

C++ 如果禁用多播环回,是否可以在同一个多播组上发送和接收?,c++,multicast,C++,Multicast,假设有进程A和进程B和C,我希望所有进程将消息多播到端口p上的组X.Y.Z.W,并且A同时侦听该组上的消息。A是否可以接收来自B和C的消息而不接收自己的消息?换句话说,如果我禁用环回(为了使A不接收它正在多播的消息),它是否仍然会从B和C接收消息,或者这是否会有效地导致它不再在端口P上收听X.Y.Z.W?从文档中可以看出,IP\u MULTICAST\u LOOP选项在主机级别运行,而不是在单个套接字上运行。因此,如果禁用它,发送主机上的任何进程都不会接收多播数据包;如果启用它,发送主机上的所有

假设有进程
A
和进程
B
C
,我希望所有进程将消息多播到端口
p
上的组
X.Y.Z.W
,并且
A
同时侦听该组上的消息。
A
是否可以接收来自
B
C
的消息而不接收自己的消息?换句话说,如果我禁用环回(为了使
A
不接收它正在多播的消息),它是否仍然会从
B
C
接收消息,或者这是否会有效地导致它不再在端口
P
上收听
X.Y.Z.W

从文档中可以看出,

IP\u MULTICAST\u LOOP
选项在主机级别运行,而不是在单个套接字上运行。因此,如果禁用它,发送主机上的任何进程都不会接收多播数据包;如果启用它,发送主机上的所有进程都将接收它


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

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


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

是,它将按照您的描述工作。我们在RSP[1]中使用它的方式与任何对任何可靠的多播完全相同


[1] 是的,它将按照您的描述工作。我们在RSP[1]中使用它的方式与任何对任何可靠的多播完全相同


[1]

@PalaceChan这个答案是不正确的,它似乎是基于猜测,而不是经验或知识。禁用
IP_MULTICAST_LOOP
只会阻止您从同一主机接收自己发送的多播。您仍将从其他来源接收多播。在我所见过的任何文档中,都没有其他的建议@eile的回答是正确的。@ejp我在谷歌上搜索并检查了许多网页,他们都说“相同的主机”,而不是“相同的进程”或“相同的套接字”。换句话说,你还在猜测。你试过吗?多播环回是一个影响从您调用它的套接字发送的选项。@ejp猜测和研究是有区别的。我想删除我的答案,但他接受了我的答案,所以我不会删除。仅仅使用搜索引擎并不是研究。要成为真正的研究,必须有一个关键的实验。@PalaceChan这个答案是不正确的,它似乎是基于猜测,而不是经验或知识。禁用
IP_MULTICAST_LOOP
只会阻止您从同一主机接收自己发送的多播。您仍将从其他来源接收多播。在我所见过的任何文档中,都没有其他的建议@eile的回答是正确的。@ejp我在谷歌上搜索并检查了许多网页,他们都说“相同的主机”,而不是“相同的进程”或“相同的套接字”。换句话说,你还在猜测。你试过吗?多播环回是一个影响从您调用它的套接字发送的选项。@ejp猜测和研究是有区别的。我想删除我的答案,但他接受了我的答案,所以我不会删除。仅仅使用搜索引擎并不是研究。要想成为真正的研究,就必须有一个关键的实验。