1

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

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

4

1 回答 1

2

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

boost::asio::ip::udp::socket*  _write;
...
_write->set_option( ip::multicast::outbound_interface( ifAddr.to_v4()));
于 2012-09-26T07:15:17.193 回答