Как установить время ожидания для 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 ()). Если клиент зависает или аварийно завершает работу, он никогда не прекращает блокировку, если я не завершу процесс (который даже тогда не всегда работает).
Код клиента очень похож на этот и блокируется аналогичным образом.