Мой клиент всегда блокирует br.readLine(). Я попытался добавить «\ n», но это не решило проблему. Также char Array блокирует, когда я использую только read вместо readLine.Ячейки сокетов Java TCP readLine
Кто может мне помочь?
КЛИЕНТ
/** Benutzereingabe einlesen **/
BufferedReader brEingabe = new BufferedReader(new InputStreamReader(System.in));
String send = brEingabe.readLine();
Socket socket = new Socket(host, port);
BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter pr = new PrintWriter(socket.getOutputStream());
pr.println(send);
pr.flush();
System.out.println(br.readLine()); // is blocking
socket.close();
}
catch(Exception e){
e.printStackTrace();
}
}
SERVER
ServerSocket serverSocket = new ServerSocket(port);
while (true) {
//ServerSocket serverSocket = new ServerSocket(port);
Socket socket = serverSocket.accept(); // blockiert bis Anfrage kommt
BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String zeile;
while ((zeile = br.readLine()) != null) {
System.out.println(zeile);
if (zeile.isEmpty()) break;
}
PrintWriter pw = new PrintWriter(socket.getOutputStream());
pw.write("Hallo\n");
pw.flush();
pw.close();
socket.close();
}
}
catch (IOException e) {
e.printStackTrace();
}
Хорошо, исправлена проблема, но как сервер может читать несколько строк? – Max
Просмотреть мое обновление ... –
Я изменил println (отправить) на pr.println (отправить + "\ n"); и теперь все в порядке. zeile.isEmpty() проверяет, есть ли «\ n» в конце? Я действительно не понимаю, как это работает – Max