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