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=]
) 没有做任何特别的事情,它肯定不会导致 null
被 readLine()
读取。
如果你想继续来回发送数据,中间会发生一些事情,你需要想出一个协议来使用(即发送什么样的消息以及什么时候发送),并设计你的程序开始从那里开始。
在我的 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=]
) 没有做任何特别的事情,它肯定不会导致 null
被 readLine()
读取。
如果你想继续来回发送数据,中间会发生一些事情,你需要想出一个协议来使用(即发送什么样的消息以及什么时候发送),并设计你的程序开始从那里开始。