我有一个小客户端程序,它在 IPv6 多播组(例如 ff12::blah:blah%en0)上侦听服务器发出的多播数据包。它运作良好。
服务器有时还想向我的客户端发送一个单播数据包(因为如果该数据包仅与一个客户端相关,那么用它来打扰多播组的所有其他成员是没有意义的)。所以我的服务器只是对我的客户端的 IP 地址和客户端的 IPv6 多播套接字正在侦听的端口执行 sendto()。
如果我的客户端在 MacOS/X 下运行,这可以正常工作;单播数据包由接收多播数据包的同一个套接字接收。在 Windows 下,OTOH,客户端永远不会收到单播数据包(即使它确实收到了多播数据包而没有任何问题)。
我的问题是,是否期望多播侦听器 IPv6 UDP 套接字也应该能够在同一端口上接收单播数据包(在这种情况下,我可能做错了什么,或者 Windows 配置错误)?或者这是在 MacOS/X 下“恰好可以工作”但不能保证的东西,所以它在 Windows 下对我不起作用的事实只是意味着我有错误的期望?