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