基本Java Echo套接字通信错误

时间:2015-01-10 23:42:06

标签: java sockets

我一直在查看基本Java Socket使用的大量解释,并为我自己的服务器/客户端回显对构建了以下基本代码。但是,客户端代码中存在一些我在生活中无法找到的挂断。也许其他人可以发现它?

    // 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;
    }

1 个答案:

答案 0 :(得分:0)

它并没有阻止。它在服务器的readLine()中被阻止了。在服务器flush()之后尝试println()