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

设置为接收多播数据包的IPv6 UDP套接字是否也能够接收单播数据包?,udp,ipv6,multicast,unicast,Udp,Ipv6,Multicast,Unicast,我有一个小客户端程序,它在IPv6多播组(例如ff12::blah:blah%en0)上侦听服务器发送的多播数据包。它工作得很好 服务器有时也希望向我的客户端发送一个单播数据包(因为如果数据包只与一个客户端相关,那么就没有必要用它来干扰多播组的所有其他成员)。因此,我的服务器只对客户端的IP地址和客户端的IPv6多播套接字正在侦听的端口执行sendto() 如果我的客户机是在MacOS/X下运行的,那么它可以正常工作;单播数据包由接收多播数据包的同一套接字接收。在Windows、OTOH下,客户

我有一个小客户端程序,它在IPv6多播组(例如ff12::blah:blah%en0)上侦听服务器发送的多播数据包。它工作得很好

服务器有时也希望向我的客户端发送一个单播数据包(因为如果数据包只与一个客户端相关,那么就没有必要用它来干扰多播组的所有其他成员)。因此,我的服务器只对客户端的IP地址和客户端的IPv6多播套接字正在侦听的端口执行sendto()

如果我的客户机是在MacOS/X下运行的,那么它可以正常工作;单播数据包由接收多播数据包的同一套接字接收。在Windows、OTOH下,客户端从未接收到单播数据包(即使它接收到的多播数据包没有任何问题)


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

它应该可以工作。只要您绑定到IN6ADDR\u ANY,然后加入多播组,您就应该能够毫无问题地发送和接收单播数据包


在使用多播时,绑定到
IN6ADDR\u ANY
(或IPv4的
INADDR\u ANY
)非常重要。如果绑定到特定接口,这会中断Linux系统上的多播。

除非套接字绑定到多播地址,否则它应该可以工作。只要他出价的IP地址是本地IP地址,并且所有发送方都可以访问,他就不必绑定到INADDR_\n。重要的是不要使用Linux奇怪的绑定到多播地址的功能。@EJP如果希望多播工作,您可以这样做。请参阅我的编辑。