PrintWriter 打印与 println

PrintWriter print vs println

当使用

时,我有一个等待消息的服务器和一个向他发送消息的客户端
    PrintWriter out = new PrintWriter(lpSocket.getOutputStream(), true);
    String msg;
    BufferedReader userIn = new BufferedReader(new InputStreamReader(System.in));
    while ((msg = userIn.readLine()) != null)
        out.print(msg + (char) 10);

没有任何反应,这意味着服务器一直在等待一条永远不会到达的消息。当我将 out.print 更改为 out.println 时,它起作用了。

我想知道为什么

默认情况下,PrintWriterprintln 中调用 flush,而在 print 中不会调用 flush。您可以通过在 out.print 调用

之后添加 out.flush() 来解决此问题