1

マルチキャストを使用する2つのプログラム(MS VC ++)があります-受信者と送信者。デスクトップ PC (Windows 7) とネットブック (Windows XP) の間で WiFi 経由でテストしました。デスクトップ PC には、AP モードで動作する WiFi ドングルがあります。送信側プログラムのインターフェイス アドレスに INADDR_ANY を指定すると、問題が発生します。マルチキャストがデスクトップ PC からネットブックに到達しません。INADDR_ANY の代わりにこの WiFi インターフェイスの実際のアドレスを指定すると、正常に動作します。

したがって、送信者プログラムがすべてのインターフェイスで動作できるようにしたいと考えています。どうすればそれを行うことができますか?インターフェイスごとに個別のソケットを初期化する必要がありますか? それとも、よりエレガントな可能性があるのでしょうか?

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 に答える