少し前に、仕事で使用していたプログラムの中に Socket sc = new Socket(); sc.setSoTimeout(20000); としている記述がありました。これは何をやっているのだろうと 思いリファレンスを見てみたところ 「Socket に関連付けられた InputStream の read() 呼び出しが、その時間の間だけブロックされます。タイムアウトの期限が切れると、Socket がまだ有効であっても java.net.SocketTimeoutException が発行されます。」 という記述がありました。 read() 呼び出しが、その時間の間だけブロックされるという意味がよくわからないのですが どういうことでしょうか。 これはAさんがソケット通信して取得した結果を20秒の間に読み込まなければいけなくて、 Bさんはその20秒間ソケット通信ができないということでしょうか。
↧