Echo Server没有回应

时间:2016-04-13 20:06:24

标签: java sockets server client echo

我正在尝试编写echo客户端服务器,但我没有收到服务器的任何响应。不知道我的错误在哪里。 我在互联网上看到了一些例子。有些人只是使用InputStream / OutputStream,但我决定使用BufferedReader和PrintWriter - 这会产生很大的差异吗?

服务器端:

public class Server {

public static void main(String[] args){
    Server server = new Server();   
    server.runServer(Integer.parseInt(args[0]));
}

private void runServer(final int port){
    ServerSocket serversckt = null;
    Socket socket = null;
    BufferedReader in = null;
    PrintWriter out = null;

    try{
       serversckt = new ServerSocket(port);
       socket = serversckt.accept();
       System.out.println("Request from client accepted!");


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

       String str;
       while((str = in.readLine()) != null){
           System.out.println(str);
           out.println(str);
           out.flush();
       }
    }
     catch (IOException e) {
        System.out.println(e.getMessage());
    }   

}
}

客户方:

public class Client{

public static void main(String[] args){
    Client client = new Client();   
    client.runClient(Integer.parseInt(args[0]), args[1]);
}

private void runClient(final int port, final String hostname){
    Socket sckt = null;
    try{
        sckt = new Socket(hostname, port);
        BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in));
        BufferedReader in = new BufferedReader(new InputStreamReader(sckt.getInputStream()));
        PrintWriter out = new PrintWriter(sckt.getOutputStream(), true);

        String str;
        while((str = stdIn.readLine()) != null){
            out.println(str);
            System.out.println(in.readLine());
        }

    } catch(IOException e){
        System.out.println(e.getMessage());
    }
}

谢谢!

1 个答案:

答案 0 :(得分:1)

我无法重现您的问题。我在Client.java中添加了缺少的导入和最终},编译并在不同的终端中运行服务器和客户端。

客户端:

  

$ java Client 2000 localhost
  FOO
  FOO
  酒吧
  杆

服务器:

  

$ java Server 2000
  接受客户的要求!
  FOO
  杆

每当我在客户端窗口中写一些东西时,它都会回复给我,同一行出现在服务器上。

相关问题