双网卡接收组播的问题
机器上有两个网卡,分别接到了不同的网络中(其实是一个接到了交换机上,另一个直接用网线连到了笔记本上)
然后用笔记本发送组播
ipmreq.imr_interface.S_un.S_addr = INADDR_ANY;
ipmreq.imr_multiaddr.S_un.S_addr = inet_addr("235.0.0.1");
nRet = setsockopt(sock, IPPROTO_IP, IP_ADD_MEMBERSHIP, (const char *) &ipmreq, sizeof(ipmreq));
如果像上面一样imr_interface指定的是INADDR_ANY的话,程序收不到组播数据
改成 ipmreq.imr_interface.S_un.S_addr = inet_addr("192.168.10.11");后才能正常接收组播数据(192.168.10.11是跟笔记本直连的网口的ip地址)
有没有什么办法不指定具体的网卡,使用INADDR_ANY就能直接收到所有网口上的组播数据呢,因为有时候不确定组播数据时从哪个网口上过来的