为什么DatagramSocketImpl joinGroup方法需要一个NetworkInterface,如果套接字必须已绑定到它?

时间:2012-02-27 17:04:22

标签: java sockets networking network-programming

好奇。那是多余的吗?你有没有绑定到你想要使用的网络?也许是因为你绑定到0.0.0.0并且现在只想从接口X监听多播数据包的情况?

1 个答案:

答案 0 :(得分:2)

  1. 如果您绑定INADDR_ANY(这是正常情况),则连接组IGMP消息将通过路由表所指示的最短路由到达多播地址的任何NIC接口。在多宿主主机中,您可能需要它通过所有NIC出去,因此您可以依次通过它们循环连接它们。

  2. 如果您绑定到特定的NIC,则在加入时指定网络接口是没有意义的。

  3. 如果您绑定了多播地址本身,那么该套接字只能接收多播,而不是单播UDP,如果您想通过所有接口加入,则可能需要像(1)中那样循环。 / p>