为什么在printwwriter上flush()会影响println() ?



我有一个服务器的基本代码:

        ServerSocket serverSocket = new ServerSocket(14000);
        Socket clientSocket = serverSocket.accept();
        BufferedReader in = new BufferedReader(
                new InputStreamReader(clientSocket.getInputStream()));
        PrintWriter out = new PrintWriter(clientSocket.getOutputStream());
        String incoming;
        while((incoming = in.readLine()) != null){
            System.out.println("Client Says: " + incoming);
            out.println("Client Says: " + incoming);
            out.flush();
            //if(incoming.equals("HELLO")) break;
        }
        clientSocket.close();
        serverSocket.close();

我正试图进一步了解流,因为它们让我很头疼。从我所读到的,println方法自动刷新为您,但是这一行不交付给客户端,除非刷新方法被调用之后?我只是想找一个合理的解释?

要启用自动刷新printwwriter,必须将其构造函数的第二个参数设置为true。

我以前遇到过这个问题,只是:

PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);

那就不一样了。如果你不自动刷新,你可以得到一些错误或接收数据为空,它发生在我一段时间前。致以最亲切的问候。

相关内容

  • 没有找到相关文章

最新更新