-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