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