完全なリクエストを受信せず、接続を閉じると、45 秒後にタイムアウトするサーバーがあります。を介してこのサーバーに接続しSocket
、リクエストをソケットの に書き込みますOutputStream
。
Socket socket = new Socket("myhost", myPort);
PrintWriter out = new PrintWriter(socket.getOutputStream());
out.write(properRequestMessage);
out.flush();
ここでは、私の要求が適切であると仮定しています (私のプロトコルに従っています)。サーバーはファイルで応答することになっています。ソケット入力ストリームから読み取ろうとします:
BufferedReader response = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String in;
while((in = response.readLine()) != null) {
System.out.println(in);
}
ここのreadLine()
ブロックは、私のサーバーが私の要求が適切に終了されていないと判断し、さらに待っているためだと思います。
ここで、45 秒が経過してサーバーがタイムアウトした場合、ブロックをreadLine()
解除するか、Socket
デフォルトのタイムアウト時間まで待機しますか?