网络为什么在java中运行这个while循环?
更新:我是个白痴。服务器有一行out.println((String) null);
,客户机使用该行知道何时停止和断开连接。结果表明该行是不必要的,可能是“null”的来源(我不知道tat是如何变成字符串的,但是…)但是谢谢大家的帮助
我正在编写一个客户机-服务器程序,在该程序中,只要服务器发送null,客户机就会终止。所讨论的循环是:
while ((message = in.readLine()) != null) {
System.out.println("C: Recieved " + message + " from server");
}
输出为:
C: Recieved Hi from server
C: Recieved null from server
服务器在发送hi之后和在客户端上调用close()
之前向客户端发送null
。我可能应该在前面提到这一点,但我使用的是java中的Socket和ServerSocket类。网但为什么while循环运行两次,即使消息是null
也要输入
编辑:服务器发送空值的行是out.println((String) null);
。是否将其转换为字符串“null”
# 1 楼答案
字符串
"null"
与值null
不同。值null
由没有更多数据的readline()
返回根据Java文档,
readline
返回一个:如果您的服务器正在发送字符串
"null"
,那么这实际上是非空数据