-1
我的客户端始终阻塞在br.readLine()。我试图添加“\ n”,但它没有解决问题。还有一个字符数组阻塞,当我只使用读取而不是readLine。Java TCP套接字块readLine
谁能帮帮我?
CLIENT
/** 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();
}
}
服务器
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 2015-02-10 22:16:10
查看我的更新... – 2015-02-10 22:17:14
我将println(发送)更改为pr.println(send +“\ n”);现在没关系。 zeile.isEmpty()检查最后是否有“\ n”?我真的不明白它是如何工作的 – Max 2015-02-10 22:27:24