Как и в комментарии, я в конце концов нашел решение. BufferedReader.readLine () "заблокирован". При чтении из файла он возвращает строку после чтения до символа новой строки, если я правильно понимаю. Но поскольку это был «устойчивый поток» с сервера без новых строк, он просто продолжал «читать» и никогда не возвращал строку.
Затем я попытался использовать метод BufferedReader.read (), который читает символ за символом,и возвращается после каждого символа (таким образом, никогда не блокируется). Затем он печатает каждый символ по мере его поступления, также он прослушивает новую строку, отправляемую с сервера, и как только прочитанный символ равен новой строке, он вместо этого печатает новую строку. В некотором роде имитирует поведение «строки чтения», которое я ожидал от исходного вопроса.
Чтение части клиента:
while(true) {
character = (char) reader.read();
if(Character.isISOControl(character)) {
System.out.println();
}
else {
System.out.printf("%c", character);
}
}
Отправка части сервера:
private String message = "HELLO\n";
...
while(true) {
try {
Thread.sleep(2000);
writer.write(message);
writer.flush();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}