我試圖將多行代碼從客戶端發送到服務器。
這是服務器端的代碼
in = new BufferedReader(new InputStreamReader(client.getInputStream()));
out = new PrintWriter(client.getOutputStream(), true);
//read client input
//multi line
//https://stackoverflow.com/questions/43416889/java-filereader-only-seems-to-be-reading-the-first-line-of-text-document?newreg=2f77b35c458846dbb1290afce8853930
String line = "";
while((line =in.readLine()) != null) {
System.out.println(line);
}
System.out.println("is it here?");
這是客戶端的代碼:
BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream()));
BufferedReader keyboard = new BufferedReader(new InputStreamReader(System.in));
PrintWriter out = new PrintWriter(socket.getOutputStream(),true);
while (true) {
System.out.print("> ");
//content server input command (put, lamport clock, message)
String command = keyboard.readLine();
if (command.equals("quit")){
break;
}
//read from CSDB/txt1.txt
String message = readFileReturnString("CSDB/txt1.txt", StandardCharsets.UTF_8);
System.out.println(message);
//send to clientHandler through PrintWriter
out.println(command " 3 \n" message);
//receive response from ClientHandler (lamport clock)
String serverResponse = input.readLine();
System.out.println(serverResponse socket);
}
服務器端能夠列印出從客戶端發送的所有文本。然而,while 回圈并沒有中斷并且 System.out.println("is it here?"); 從未被執行過。
我可以知道為什么以及如何解決這個問題嗎?
uj5u.com熱心網友回復:
您的客戶端正在等待服務器的一些回應。但是服務器不發送任何回應。服務器寫入System.out唯一的。服務器必須用out.
in = new BufferedReader(new InputStreamReader(client.getInputStream()));
out = new PrintWriter(client.getOutputStream(), true);
//read client input
//multi line
//https://stackoverflow.com/questions/43416889/java-filereader-only-seems-to-be-reading-the-first-line-of-text-document?newreg=2f77b35c458846dbb1290afce8853930
String line = "";
while((line =in.readLine()) != null) {
System.out.println(line);
out.println(line); // send Server response
}
System.out.println("is it here?");
uj5u.com熱心網友回復:
@talex 然后你需要告訴服務器它什么時候應該退出回圈。你可能會發送特殊的字串或其他東西。
這作業正常。
String line = "";
while((line =in.readLine()) != null) {
System.out.println(line);
if (line.equals("break") {
break;
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/512341.html
