在具有多个网卡的机器上,如果想要从每个网卡发送UDP数据,一般的做法是:
针对每张网卡的每个IP都绑定一个SOCKET,然后发送的时候针对每个SOCKET都发送一次。
但是如果你要发送多播数据,在有的系统上(我所测试的Win2K),即使通过每个IP都发送了多播包,但是系统会自动选择一张默认的网卡来发送你的多播包。
这是你可以通过设置下面这个Socket选项来更改这种默认行为:
unsigned long addr = inet_addr("172.22.102.73");
setsockopt((*iter_Shadowtable_ip)->multicast_Socket.socket, IPPROTO_IP, IP_MULTICAST_IF, (char *)&addr, sizeof(addr));
其中,"addr"就是你想要发送多播包的网卡的一个IP。
你只需要在每次发送多播包之前都调用上面两句就行了。
转载于:https://www.cnblogs.com/kernelfans/archive/2009/05/20/1470736.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)