未收到服务器

时间:2015-11-17 22:06:32

标签: java sockets tcp network-programming

我无法收到服务器的回复。当我启动客户端和服务器时没有任何反应。

这是服务器代码

public class Server {

    public static void main(String[] zero) throws IOException {
        ServerSocket socketServer;
        Socket socketDuServer;
        PrintWriter out;
        BufferedReader in;
        socketServer = new ServerSocket(2009);
        socketDuServer = socketServer.accept();
        in = new BufferedReader(new InputStreamReader(socketDuServer.getInputStream()));
        String message = in.readLine();
        out = new PrintWriter(socketDuServer.getOutputStream(), true);
        String numberMessage = "The Number of ET est:" + StringToArrayChar(message);
        System.out.println(numberMessage);
        out.print(numberMessage);
        out.flush();
        socketDuServer.close();
        socketServer.close();
    }

    public static int StringToArrayChar(String s) {
        int c = 0, k = 0;
        char[] charArray = s.toCharArray();
        for (int j = 0; j < s.length(); j++) {
            if (charArray[j] == 'e') {
                k = j + 1;
                if (charArray[k] == 't') {
                    c++;
                }
            }
        }
        return c;
    }
}

这是客户端代码

public class Client {

    public static void main(String[] args) throws IOException {
        Socket socket;
        BufferedReader in;
        PrintWriter out;
        String message;
        socket = new Socket(InetAddress.getLocalHost(), 2009);
        out = new PrintWriter(socket.getOutputStream(), true);
        out.print("helloet");
        out.flush();
        in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
        message = in.readLine();
        System.out.println(message);
        socket.close();
    }
}

1 个答案:

答案 0 :(得分:1)

您的服务器尝试接收,但您的客户端从不发送一行。

无法解决此问题。为什么?因为我们无法判断服务器在尝试接收线路时是否不正确,或者客户端在不发送线路时是不正确的。我们唯一能说的是通过查阅协议规范来解释服务器和客户端如何交换数据。而且没有一个。失败。

请退后一步。阅读在TCP之上分层的一些协议的规范,例如HTTP,IRC和SMTP。然后,在开始编写使用TCP的代码之前,请花时间清楚地记录协议。这样可以避免像这样的错误,并且数百名首次尝试使用TCP的人不可避免地会犯这样的错误。

我知道这听起来像是一个巨大的痛苦。但请相信我,有几十个类似的错误等着你制作它们。