Как установить тайм-аут для BufferedReader и PrintWriter в Java 1.4?

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

Рассматриваемый клиентский код очень похож на этот и блокируется аналогичным образом.

14
задан Bender the Greatest 1 November 2018 в 21:09
поделиться