基本 Java 回声套接字通信错误

Basic Java Echo Socket Communication Error

我一直在查看基本 Java 套接字使用的大量解释,并为我自己的 Server/Client 回显对构造了以下基本代码。但是,客户端代码中有一些我一辈子都找不到的挂断。也许其他人可以发现它?

    // Server Code:
    try (ServerSocket serverSocket = new ServerSocket(22222);
                Socket cSocket = serverSocket.accept();
                PrintWriter out = new PrintWriter(cSocket.getOutputStream());
                BufferedReader in = new BufferedReader(
                     new InputStreamReader(cSocket.getInputStream()))) {
        System.out.println("Client connected: " + cSocket.getInetAddress().getHostAddress());
        // console DOES print ^this line and correct IP when client is run.
        String inLine;
        while (true) {
                inLine = in.readLine();
                out.println(inLine);
                if (inLine.equals("exit")) break;
        }

    // client code
    try (Socket socket = new Socket("localhost", 22222);
        PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
        BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
        BufferedReader consoleIn = new BufferedReader(new InputStreamReader(System.in));) {
    String userIn;
    while (true) {
            System.out.print("Client> ");
        userIn = consoleIn.readLine();
        out.println(userIn); // code hangs here. 
        out.flush();
        System.out.println("Server> " + in.readLine());
        if (userIn.equals("exit")) break;
    }

那里没有阻塞。它在来自服务器的 readLine() 中阻塞。在服务器中的 println() 之后尝试 flush()