设置为接收多播数据包的IPv6 UDP套接字是否也能够接收单播数据包?

时间:2016-02-24 21:06:29

标签: udp ipv6 multicast unicast

我有一个小型客户端程序,用于侦听由服务器发出的多播数据包的IPv6多播组(例如ff12 :: blah:blah%en0)。效果很好。

服务器有时也会向我的客户端发送单播数据包(因为如果数据包只与一个客户端相关,那么打扰组播组的所有其他成员就没有意义了)。所以我的服务器只对我的客户端的IP地址和客户端的IPv6多播套接字正在监听的端口执行sendto()。

如果我的客户端在MacOS / X下运行,这样可以正常工作;单播数据包由接收多播数据包的同一套接字接收。在Windows,OTOH下,客户端从不接收单播数据包(即使它确实收到了多播数据包而没有任何问题)。

我的问题是,是否期望多播侦听器IPv6 UDP套接字也应该能够在同一端口上接收单播数据包(在这种情况下,我可能做错了什么,或者Windows配置错误)?或者这是“恰好恰好工作的东西”#34;在MacOS / X下但是没有保证,所以它在Windows下对我不起作用的事实只是意味着我有错误的期望?

1 个答案:

答案 0 :(得分:0)

应该可以正常工作。只要你绑定到IN6ADDR_ANY,然后加入组播组,你应该能够发送和接收单播数据包没有问题。

使用多播时绑定到IN6ADDR_ANY(或INADDR_ANY用于IPv4)很重要。如果绑定到特定接口,则会破坏Linux系统上的多播。