如何为多播指定所有接口



我有两个程序(MS VC++),它们使用多播 - 接收器和发送器。我通过WiFi在台式PC(Windows 7)和上网本(Windows XP)之间测试它。台式电脑有在AP模式下工作的WiFi加密狗。如果我在发送程序的接口地址中指定INADDR_ANY,则会出现一个问题:组播无法从台式PC到达上网本。如果我指定此WiFi接口的真实地址而不是INADDR_ANY - 它工作正常。

所以,我希望我的发送程序可以在所有接口上运行。我该怎么做?我必须为每个接口初始化单独的套接字?还是它有更优雅的可能性?

正如前面的人所说,您必须明确选择输出接口。如果要同时组播到不同的接口,则需要多个套接字。在 boost::asio 中,对应的调用是:

boost::asio::ip::udp::socket*  _write;
...
_write->set_option( ip::multicast::outbound_interface( ifAddr.to_v4()));

最新更新