setsockopt尝试将IGMP数据包发送到接口down

问题描述

|| 我正在一个具有两个具有相同IP和路由表(出于冗余目的)的不同接口的系统上工作。 在每个特定时间,只有一个接口处于打开状态。 我在用着:
setsockopt(MSock,IPPROTO_IP,IP_ADD_MEMBERSHIP,&ipMreq,sizeof(ipMreq));
发送IGMP加入消息。 我希望,如果我要从特定接口IP发送IGMP消息,内核将找到第一个UP接口并从中发送消息,但实际上该消息是从具有该IP的第一个接口发送的(即使它下降了)。 我的假设在这种情况下正确吗? 我有什么办法使它起作用? 谢谢, Itamar     

解决方法

        当填充“ 1”时,您可以指定一个接口。如果使用
htonl(INADDR_ANY);
,它将绑定到默认接口,该接口可能与您想要的不同。明确地提供一个IP地址,尝试这样。
ipMreq.imr_multiaddr.s_addr = inet_addr(\"226.0.0.1\");//multicast group
ipMreq.imr_interface.s_addr = inet_addr(\"192.168.2.235\");//interface name