我很抱歉,因为我想不出任何更好的标题。 我已经用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