-1
boost.asioとUDPを使用してクライアントを区別するにはどうすればよいですか。ブーストのすべての例では、一度に1つのリモートエンドポイントを保持するためにメンバー変数を使用します。私はエンドポイントのリストを保持し、到着時に受信したデータをどのオブジェクトに送信するかを決定する必要があります。私は現在、ブーストアシオを使用してクライアントを区別する
void Receive() {
boost::asio::ip::udp::endpoint client_endpoint;
char data[32];
socket_.async_receive_from(boost::asio::buffer(data, 32), client_endpoint,
boost::bind(&MyClass::onReceive, this, boost::asio::placeholders::error, boost::asio::placeholders::bytes_transferred));
}
このようなコードを持っていますが、これは私がから受け付けており、初めての場合は
client_endpoint
は、ハンドラ関数に(使用できない)範囲の外に行こう、と私は新しい
Client
オブジェクトを作成したいですそうでない場合は、適切なクライアントオブジェクトを更新します。
私はstd::set<boost::ip::udp::endpoint> client_sessions_;
をメンバー変数として自分のサーバーに保持することを考えていましたが、client_endpoint
は非同期呼び出しがディスパッチされるまではまだ埋められません。
どうすれば対応できますか?
(あまり好ましくない)簡単にするために、削除を使用することができます。正しいスニペットのようなものでなければなりません – shane