如何使用此客户端 - 服务器程序?

时间:2013-12-28 17:39:48

标签: java sockets client-server serversocket

我有一个客户端 - 服务器程序的工作代码。请向我解释如何成功使用该程序。据我所知,我首先运行Server.java

Server.java:

public class Server {

  public static void main(String[] args) throws IOException {
    System.out.println("Welcome to Server side");
    BufferedReader in = null;
    PrintWriter    out= null;

    ServerSocket servers = null;
    Socket       fromclient = null;

    // create server socket
    try {
      servers = new ServerSocket(4444);
    } catch (IOException e) {
      System.out.println("Couldn't listen to port 4444");
      System.exit(-1);
    }

    try {
      System.out.print("Waiting for a client...");
      fromclient= servers.accept();
      System.out.println("Client connected");
    } catch (IOException e) {
      System.out.println("Can't accept");
      System.exit(-1);
    }

    in  = new BufferedReader(new InputStreamReader(fromclient.getInputStream()));
    out = new PrintWriter(fromclient.getOutputStream(),true);
    String input;

    System.out.println("Wait for messages");
    while ((input = in.readLine()) != null) {
     if (input.equalsIgnoreCase("exit")) break;
     out.println("S ::: "+input);
     System.out.println(input);
    }
    out.close();
    in.close();
    fromclient.close();
    servers.close();
  }
}

之后,我运行client.java:

public class client {
  public static void main(String[] args) throws IOException {

    System.out.println("Welcome to Client side");

    Socket fromserver = null;

    if (args.length==0) {
      System.out.println("use: client hostname");
      System.exit(-1);
    }

    System.out.println("Connecting to... "+args[0]);

    fromserver = new Socket(args[0], 4444);
    BufferedReader in  = new BufferedReader(new InputStreamReader(fromserver.getInputStream()));
    PrintWriter    out = new PrintWriter(fromserver.getOutputStream(),true);
    BufferedReader inu = new BufferedReader(new InputStreamReader(System.in));

    String fuser,fserver;

    while ((fuser = inu.readLine())!=null) {
      out.println(fuser);
      fserver = in.readLine();
      System.out.println(fserver);
      if (fuser.equalsIgnoreCase("close")) break;
      if (fuser.equalsIgnoreCase("exit")) break;
    }

    out.close();
    in.close();
    inu.close();
    fromserver.close();
  }
}

我当然应该怎么做?如果你看到代码,我应该出去.println(“S :::”+输入)。我怎么能得到它?

3 个答案:

答案 0 :(得分:0)

首先运行server.java文件,这将是您的服务器,以接受端口4444处的客户端连接 然后,您可以运行任意数量的client.java程序来开始发送消息。 在客户端程序控制台中键入消息时,消息首先发送到服务器,服务器将消息发送到所有其他客户端程序,依此类推。

你有什么具体的问题吗?

答案 1 :(得分:0)

通常,当业务逻辑/数据存储在集中位置(机器)时,使用客户端服务器程序。

例如,大学服务器和数据中的学生数据由不同课程的教师使用。

您可以使用服务器代码检索/发送数据到数据库等。

请说明您希望通过该计划实现的目标。

答案 2 :(得分:0)

请务必先启动服务器。 从eclipse右键单击Server.java并选择run - >作为Java应用程序。 检查是否已运行服务器线程。查看Console视图时可以看到。如果应用程序已在运行,则会显示红色填充按钮。旁边有一个向下箭头按钮,当你点击它时会显示所有正在运行的应用程序。

因为它使用固定端口4444,所以运行服务器一次很重要。 如果消息“无法侦听端口4444”,那么肯定anothrr服务器线程已经在后台运行。如果服务器没有完全启动,那么在系统上作为服务运行的服务器会阻塞该端口。您可以在代码中更改端口。但是你必须在服务器和客户端这样做。

UPDATE 服务器打印出“等待客户......”如果它成功开始

之后,您可以通过单击Client.java上的右键运行客户端并运行 - >作为java应用程序。

更新

客户端必须以主机名为arigment。为了做到这一点,你必须在eclipse中打开运行对话框并选择客户端应用程序。切换到此对话框中的第二个寄存器,您可以在jvm和应用程序中添加参数。在应用程序参数textfield中键入localhost值127.0.0.1