私には2つのケースがあります:
- クライアントは接続し、バイトを送信せず、サーバーの応答を待ちます。
- クライアントが接続し、1バイト以上を送信して、サーバーの応答を待ちます。
次の問題は次のとおりです。最初のケースでは、バイトを読み取らず、サーバーの応答を取得する必要があります。2番目のケースでは、少なくとも1バイトを読み取る必要があります。そうしないと、サーバーの応答が返されません。次のように、少なくとも0バイトを読み取ろうとすると:
async_read(sock, boost::asio::buffer(data),
boost::asio::transfer_at_least(0),
boost::bind(&server::read, this,
boost::asio::placeholders::error,
boost::asio::placeholders::bytes_transferred));
2番目のケースでは、適切なサーバー応答を取得できません。
しかし、少なくとも1バイトを読み取った場合、このasync_read操作は終了しません。
では、どうすればこのケースを処理できますか?
更新1:時間制限を使用せずに解決策を探しています。