基本上我有一个应用程序在同一个接口和同一个应用程序中创建5个组播套接字,每个套接字绑定到不同的组播IP地址/端口。当这些套接字中的任何一个发送消息时,应用程序中的其他4个套接字最终会读取该消息。这是正常行为吗?
使用boost.asio和gcc 4.6在Ubuntu 11.10中发生这种情况。
答案 0 :(得分:2)
在某些操作系统中这是正常的;-)您可以使用setsockopt()
和IP_MULTICAST_LOOP选项将其关闭。
答案 1 :(得分:0)
听起来很奇怪。如果您使用的是UDP,则只应接收与UDP套接字的端口号关联的消息。当然,如果您在IP级别使用多播,那么端口号无关紧要。
如果没有禁用环回,环回将导致程序接收自己的消息,这是完全正确的(根据EJP)。但是,UDP端口号仍然适用。发送到端口x的多播UDP消息不应由侦听端口y的套接字接收。