Java bufferedReader readline 循环没有中断

Java bufferedReader readline loop does not break

在我的 java 代码中,我通过套接字将字符串发送到另一个流。

发件人代码:

OutputStream out = socket.getOutputStream();
String u = new String("something as text");
PrintWriter p = new PrintWriter(out);
p.print(resultMessage);
p.flush();
p.print("[=11=]");
p.flush();

收件人代码:

String s;
while ((s = br.readLine()) != null  ) {
   System.out.println(s);
 }
System.out.println("DONE");

问题是在打印接收到的数据后,while 循环不会停止,并且会存入 while ((s = br.readLine()) != null )。所以它不打印 Done

如果你不关闭连接,将不会有一个end-of-stream并且另一端将永远等待(除非配置了读取超时)。

如果您已发送完所有需要的数据,请关闭套接字。否则接收端将等待您可能发送的任何其他数据。

发送 NUL ([=12=]) 没有做任何特别的事情,它肯定不会导致 nullreadLine() 读取。

如果你想继续来回发送数据,中间会发生一些事情,你需要想出一个协议来使用(即发送什么样的消息以及什么时候发送),并设计你的程序开始从那里开始。