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