2012-01-21 17 views
2

私は、マルチキャストグループにマルチキャストパケットを送信するマシンのIPアドレスを、asioライブラリを使用して調べる方法を知っています。今私の情報源は次のようなものです:asioでマルチキャスト送信者アドレスを見つける方法は?

std::string listen_addr4 = lpd_config.config.lpd_listen_host4(); 
std::string multicast_addr4 = lpd_config.config.lpd_multicast_host4(); 
short multicast_port = lpd_config.config.lpd_multicast_port(); 

asio::ip::udp::endpoint lpd_listen_endpoint4(asio::ip::address::from_string(listen_addr4), multicast_port); //TODO ipv6 support 

asio::ip::udp::socket lpd_listen_socket4(lpd_io_service, lpd_listen_endpoint4.protocol()); //TODO ipv6 support 

lpd_listen_socket4.set_option(asio::ip::udp::socket::reuse_address(true)); 
lpd_listen_socket4.bind(lpd_listen_endpoint4); //TODO ipv6 support 

lpd_listen_socket4.set_option(asio::ip::multicast::join_group(asio::ip::address::from_string(multicast_addr4))); //TODO ipv6 support 

次はどうしますか?

答えて

3

マルチキャストグループにブロードキャストできるマシンがあれば、receive_fromまたはasync_receive_fromのメソッドを使用して、メッセージの受信を開始する必要があります。

これらのメソッドは、リモートピアの詳細をエンドポイントオブジェクトに取り込み、アドレスに解決できます。

+0

ありがとうございました!リスンエンドポイントアドレスが送信者のアドレスに変更されるのは直感的ではありません。 –

関連する問題