如果服务器超时,Socket InputStream read()是否会解锁?

Sot*_*lis 4 java sockets

如果没有收到完整请求并关闭连接,我有一台服务器在45秒后超时.我通过a连接到此服务器Socket并将我的请求写入套接字OutputStream.

Socket socket = new Socket("myhost", myPort);
PrintWriter out = new PrintWriter(socket.getOutputStream());
out.write(properRequestMessage);
out.flush();
Run Code Online (Sandbox Code Playgroud)

我在这里假设我的要求很好(遵循我的协议).服务器应该用文件响应.我尝试从套接字输入流中读取:

BufferedReader response = new BufferedReader(new InputStreamReader(socket.getInputStream()));

String in;

while((in = response.readLine()) != null) {
    System.out.println(in);
}
Run Code Online (Sandbox Code Playgroud)

readLine()这里的块,我认为这是因为我的服务器认为我的请求没有正确终止,因此等待更多.

现在,如果45秒后通过并且我的服务器超时,是否会readLine()解锁或等待一些Socket默认的超时时间?

Pet*_*rey 6

这取决于服务器超时时的作用.如果它关闭连接,你会看到.如果它只记录一条消息,您可能看不到任何内容.

没有默认的读取超时.readLine()可以永远等待.