通过多张网卡发送UDP多播(组播)数据

在具有多个网卡的机器上,如果想要从每个网卡发送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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值