接続が確立された後、一定期間データが受信されない場合、タイムアウトを設定して NIO SocketChannel を閉じる最良の方法は何ですか?
13600 次
2 に答える
10
また:
を使用して
Selectorいる場合、再生できる選択タイムアウトがあり、それがオフになった場合(select(timeout)ゼロを返す)、登録されているすべてのチャネルを閉じます。またはブロッキング モードを使用しています。この場合
Socket.setSoTimeout()、基礎となるソケット ( ) を呼び出して、でタイムアウトが発生したときにスローされるSocketChannel.socket()をトラップできるはずですが、サポートされていないためできません。チャネルとして開始されたソケット、またはSocketTimeoutExceptionread()なしでノンブロッキング モードを使用して
Selectorいます。この場合、ケース (1) に変更する必要があります。
したがって、ケース(1)またはjava.net.Socket直接使用する必要があります。
于 2013-06-27T10:47:28.010 に答える