Client/Server Java 中的程序 - 流

Client/Server Program in Java - Streams

我在从我为创建 server/client 程序而实现的代码中获取我想要的输出时遇到问题...这只是一个非常简单的问题,我不知道为什么我没有得到我想要的。

服务器代码如下:

ServerSocket serverSocket = new ServerSocket(1025);
        System.out.println("Porting...");
        Socket socket = serverSocket.accept();

        PrintWriter out = new PrintWriter(socket.getOutputStream());
        BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));

        String s = in.readLine();
        System.out.println("Server read: " + s);
        out.write("Got it");

        socket.close();
        System.out.println("Server Exit");

客户:

    System.out.print("Connecting...");
        Socket socket = new Socket("localhost",1025);

        BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
        PrintWriter out = new PrintWriter(socket.getOutputStream());

        out.write("Hello, Server");

        String s = in.readLine();
        System.out.println("Client Recieved: " + s);

        socket.close();
        System.out.println("Client Exit");

我尝试获取 Hello, Server 输出,而我只是从客户端获取 "connecting" syso(我这样做是为了看看它是否有效)

在流上写入后,您必须通过在输出流上调用 flush() 方法来刷新流。否则,一旦流缓冲区已满,流将被刷新。

 out.flush();

此外,您还必须确保输入换行符以提及行尾。因为 readLine() 用 newline() 等待字符串。

A line is considered to be terminated by any one of a line feed ('\n'), a carriage return ('\r')



  out.write("Hello, Server\n");
            out.flush();