如何在使用套接字连接创建的 BufferedReader 和 PrintWriter 上设置超时?这是我现在为服务器提供的代码,它一直有效,直到服务器或客户端崩溃:
while(isReceiving){
str = null;
BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter pw = new PrintWriter(socket.getOutputStream(), true);
while ((str = br.readLine()) != null){
System.out.println("Processing command " + str);
pw.println(client.message(str));
}
}
在这段代码的范围之外,我设置了 1000 毫秒的套接字超时,这在等待初始连接时按预期工作。但是程序在 (str = br.readLine()) 处阻塞。如果客户端挂起或崩溃,它永远不会停止阻塞,除非我终止进程(即使那样也不总是有效)。
有问题的客户端代码与此非常相似,并且以类似的方式阻塞。