通过多张网卡发送UDP多播(组播)数据
2009-05-20 18:39
225 查看
在具有多个网卡的机器上,如果想要从每个网卡发送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。
你只需要在每次发送多播包之前都调用上面两句就行了。
针对每张网卡的每个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。
你只需要在每次发送多播包之前都调用上面两句就行了。
相关文章推荐
- 通过原始套接字发送UDP数据(IKEEPER换机)
- 通过UDP的组播方式收发数据
- Java中通过UDP协议发送和接受数据
- Linux 通过命令发送udp 数据
- socket通信——通过Udp传输方式,将一段文字数据发送出去
- Java中通过UDP协议发送和接受数据
- socket通信——通过Udp传输方式,将一段文字数据发送出去
- JSON - 使用cJSON 解析Qt通过UDP发送的JSON数据
- 通过UDP发送和接收数据包
- 使用QJson解析Qt通过UDP发送的JSON数据
- 通过python下的socket实现组播数据的发送和接收
- JSON - 使用cJSON 解析Qt通过UDP发送的JSON数据
- 中标麒麟(linux)下QUdpSocket无法使用组播发送数据问题
- LabVIEW使用UDP组播发送数据
- 上位机通过UDP方式获取MCU发送的数据
- linux下使用C语言接收和发送udp组播数据分别怎么写?
- Android socket通过UDP的方式发送,接收数据
- Java中通过UDP协议发送和接受数据
- 通过网卡获取http请求数据
- 组播接收与发送数据