私はC#でサーバーアプリケーションを開発しています。クライアントはサーバーに接続してさまざまな要求を行うことができます。現在、クライアントが接続すると、リクエストを処理するために新しいスレッドが生成されます。TCPClientクラスを使用してクライアント接続を処理しています。私のサーバーは次のように機能します。
- クライアントはリクエストでサーバーに接続します
- サーバーはリクエストを処理します
- サーバーは、クライアントにこれ以上の要求があるかどうかを確認するために待機します
- クライアントがタイムアウト期間内に別の要求を行わない場合、サーバーは接続を強制終了します
私の問題は次のとおりです。
TCPClientクラスから取得したNetworkStreamオブジェクトから読み取る場合、使用可能なデータがない場合、NetworkStream Read()メソッドはブロックされません。サーバーがステップ#3に達したときに、NetworkStreamにタイムアウトを設定したいと思います。クライアントがその期間内にそれ以上リクエストを行わない場合、サーバーはそのタイムアウト例外がスローされたときに接続を強制終了する必要があります。サーバーがステップ3に到達すると、ReadTimeoutプロパティを何に設定したかに関係なく、NetworkStream Read()メソッドはブロックされません。誰かが私を助けてくれますか、または私がやろうとしていることをするためのより良い方法を提案できますか?
ありがとう