更新:我是个白痴。服务器有一行out.println((String) null);
,客户端用来知道何时停止和断开连接。原来这条线是不必要的,可能“null”来自哪里(我不知道怎么变成了一个字符串,但是......)但是谢谢大家的帮助!
我正在编写一个客户端 - 服务器程序,其中客户端在服务器将其发送为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之后并在客户端上调用null
之前向客户端发送close()
。我可能早就应该提到这个,但我在java.net中使用了Socket和ServerSocket类。但是为什么while循环运行两次,即使消息是null
?
编辑:服务器发送空值的行是out.println((String) null);
。这会转换为字符串“null”吗?
答案 0 :(得分:1)
字符串 "null"
与值null
不同。 null
返回值readline()
,其中没有更多数据。
根据Java文档,readline
返回:
包含行内容的字符串,不包括任何行终止字符;如果已到达流的末尾,则为null。
如果您的服务器正在发送字符串"null"
,那实际上是非空数据。