gpt4 book ai didi

java - 服务器套接字输入流在断开连接之前返回 null

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:23:18 25 4
gpt4 key购买 nike

我正在尝试在一个使用客户端和服务器发送聊天消息的简单 Java 应用程序中处理客户端断开连接的问题。

问题来了

public void run() {
try {
System.out.println("Client Connected");
String inputLine;

while ((inputLine = in.readLine()) != null) {
System.out.println(inputLine);
theServer.handle(inputLine, this);
}
out.close();
in.close();
socket.close();
System.out.println("Client Disconnected");

} catch (Exception e) {
e.printStackTrace();
}

}

这里使用这段代码,它在输入行不为空时运行 while 循环。如果它为空,那么它将停止循环并关闭输入流和输出流以及套接字。现在,除了控制台中的输出是这样之外,这一切都工作正常:

Client Connected
null
Client(/127.0.0.1): null
null
Client(/127.0.0.1): null
null
Client(/127.0.0.1): null
null
Client(/127.0.0.1): null
Client Disconnected

我不明白为什么即使输入为空,循环也会继续循环!!在退出循环之前似乎需要一段时间才能意识到它是空的。我需要它立即退出。

如有任何帮助,我们将不胜感激

沙德宁加

最佳答案

我能想到的唯一解释是:

  • in.readLine() 正在返回字符串 "null"(可能带有尾随空格),
  • in 指的是一些自定义流或读取器包装器,其 readLine() 方法正在做一些奇怪的事情,或者
  • 这不是您实际执行的代码。

你说:

"It seems to take a while to realise that it's null before exiting the loop."

这是一个“巫术编程”的解释。除非您的 Java 实现中存在错误,否则它不可能是正确的。这是不可能的。

关于java - 服务器套接字输入流在断开连接之前返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9389867/

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