有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

网络为什么在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) 个答案

  1. # 1 楼答案

    字符串"null"与值null不同。值null由没有更多数据的readline()返回

    根据Java文档,readline返回一个:

    String containing the contents of the line, not including any line-termination characters, or null if the end of the stream has been reached.

    如果您的服务器正在发送字符串"null",那么这实际上是非空数据