asio を使用した非同期 TCP/IP クライアントがあります。接続が失われると、async_read のハンドル関数がエラーを受け取ります。そのため、接続が失われたことが通知されます。
現在、同期 TCP/IP クライアントを実装するいくつかのレガシー コードをリファクタリングしています。ここでは、抽象インターフェイスがこのシーケンス (同期書き込み、同期読み取り) を強制します。asioでそれを行うのはかなり簡単ですが、接続が失われた場合は非同期で知りたいです。
よりエレガントな方法はありますか:
オプション A: ソケットがまだ生きているかどうかをチェックするスレッドを追加します (読み取りを試みることによって... しかし、読み取りが同期読み取りからデータを盗まないことをどのように確認できますか? Boost asio ip tcp iostream Error Detectionを参照してください)
オプション B: 代わりに async_read を使用し、同期読み取りをエミュレートする