我很抱歉,因爲我想不出任何更好的標題。 我已經用Java編寫的服務器 - 客戶端程序,服務器發送一個新的行字符\n
客戶從socket.getInputStream()
讀取結束一個字符串,如果輸入具有通過使用掃描儀Java - 使用掃描儀從套接字讀取InputStream
在服務器端的下一行
ServerSocket serverSocket = new ServerSocket(PORT);
Socket socket = serverSocket.accept();
PrintWrite send = new PrintWriter(socket.getOutputStream);
send.print("Server has succeeded to proccess your request \n" + show(ID));
send.flush();
show(ID)是一個函數,它返回一個已經包含下一行字符的字符串。 在客戶端
Socket socket = new Socket(HOST,PORT);
Scanner read = new Scanner(socket.getInputStream);
public Boolean ServerResponse(){
System.out.println("please wait");
Boolean result=false;
while(true){
if(read.hasNextLine()){
System.out.println("has next");
String msg = read.nextLine();
System.out.println(msg);
if(msg.contains("succeeded")){
result = true;
}
}else{
System.out.println("finished reading server respone");
return result;
}
}
}
當我試圖運行這個。在由Server
發送的最後一行發送之後,"finished reading server respone"
從不被打印並且沒有has next
,其假定沒有下一行字符。但是else
塊永遠不會執行。奇怪的是,當我終止Server
時,它被打印出來。任何人都可以向我解釋這一點,我必須做什麼,我不需要終止打印該行的服務器?
因此,這意味着只有在有輸入但沒有下一行時才返回false。對於沒有輸入它會阻止?謝謝 – aukxn