如何为多播指定所有接口?

时间:2012-09-25 19:43:18

标签: c++ network-programming multicast lan

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

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

1 个答案:

答案 0 :(得分:2)

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

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