0

我有服务器的基本代码:

        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 方法会自动为您刷新,但是除非之后调用刷新方法,否则此行不会传递给客户端?我只是在寻找一个很好的可靠解释?

4

2 回答 2

2

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

于 2013-03-19T21:52:05.947 回答
1

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

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

那会有所作为。如果您不自动刷新,您可能会收到一些错误或接收到 null 的数据,这发生在我前一段时间。最好的祝福。

于 2013-03-19T21:54:46.403 回答