1

正常に機能するマルチキャストリーダーのセットを実装しましたが、日中に定期的かつランダムに、そのうちの1つ以上が2分間のデータのブロックを失います。私の理論では、ルーターの定期的なレポート要求が失われるか、ホストレポートが失われます。そこで、ある間隔で先制的にルーターにレポートを送信したいと思います。だから問題は私がそれをどのように行うのかということです。マルチキャストのboost:asioにrejoinメソッドが表示されません。任意のアイデアをいただければ幸いです。

// code snippet from the constructor method
// 
boost::asio::ip::udp::endpoint listen_endpoint(listen_address, mcPort);
socket_.open(listen_endpoint.protocol());
socket_.set_option(boost::asio::ip::udp::socket::reuse_address(true));
socket_.bind(listen_endpoint);

boost::asio::socket_base::receive_buffer_size option(65536*16);                    
socket_.set_option(option);
//
// Join the multicast group.
//    
socket_.set_option(boost::asio::ip::multicast::join_group(multicast_address));

m_TimerRejoinGroup.expires_from_now(boost::posix_time::seconds(10));
m_TimerRejoinGroup.async_wait(boost::bind(&Feed::handleRejoin, this));
4

1 に答える 1

2

あなたの直接の質問に答えて、再参加するオプションはありませんが、あなたは去って再び参加することができます

socket_.set_option(boost::asio::ip::multicast::leave_group(multicast_address));
socket_.set_option(boost::asio::ip::multicast::join_group(multicast_address));
于 2012-08-01T15:06:25.643 に答える