gpt4 book ai didi

Java - 使用扫描仪从套接字输入流读取

转载 作者:行者123 更新时间:2023-12-01 09:49:24 25 4
gpt4 key购买 nike

很抱歉,我想不出更好的标题。我有一个用 java 编写的服务器客户端程序,服务器发送一个以换行符 \n 结尾的字符串,如果输入有下一个,客户端会从 socket.getInputStream() 读取使用扫描仪进行线条

在服务器端

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 发送的最后一行之后没有 has next ,假设有没有下一行字符。然而,else block 永远不会被执行。奇怪的是,当我终止服务器时,它被打印出来。谁能向我解释一下这一点以及我必须做什么才能不需要终止服务器来打印该行?

最佳答案

来自Scanner#hasNextLine文档:

Returns true if there is another line in the input of this scanner. This method may block while waiting for input. The scanner does not advance past any input.

这意味着如果下一行可用,它将返回 true不是如果没有下一行可用于处理,它将返回 false 。不过,它可能正在等待另一条线出现。

关于Java - 使用扫描仪从套接字输入流读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37704886/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com