【发布时间】:2012-02-22 06:05:02
【问题描述】:
我正在尝试在一个简单的 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
我不明白为什么即使输入为空,循环也会继续循环!在退出循环之前似乎需要一段时间才能意识到它为空。我需要它立即退出。
任何帮助将不胜感激,
沙丁鱼
【问题讨论】:
标签: java sockets while-loop