为什么需要IP_MULTICAST_IF和IPV6_MULTICAST_IF?

时间:2014-11-18 06:21:14

标签: windows sockets unix networking multicast

比方说,我的机器是多宿主,有两个网络接口:

  1. 无线LAN适配器WiFi:IP:10.20.19.140
  2. 以太网适配器以太网:IP:10.20.19.154
  3. 我创建两个UDP套接字,一个监听(1),另一个监听(2)。我假设接口已经分配,​​那为什么我需要IP_MULTICAST_IF和IPV6_MULTICAST_IF?

1 个答案:

答案 0 :(得分:2)

IP_MULTICAST_IF或IPV6_MULTICAST_IF设置告诉您的套接字发送其组播数据包的接口。它是绑定套接字的接口与bind()的独立独立设置,因为bind()控制套接字从哪个接口接收组播数据包。

(当然,BSD套接字API实现者可能会假设套接字总是希望通过接收数据包的同一接口发送数据包,但这会使许多用例更加困难;例如,您正在使用单个套接字从所有接口接收多播数据包(通过INADDR_ANY),然后在使用该套接字发送数据包时,您仍然需要一种方法来指定您希望将该数据包发送到哪个多播接口)< / p>