如何实现2个不同的服务器,它们由具有相同对象的客户端调用

问题描述 投票:0回答:1

嘿,我正在做一些运动,这是您知道的背景。想象你是一家旅行社

-您必须为客户搜索最便宜的航班

-他们告诉您他们飞行了多少英里

-他们想坐在哪个区域,默认-业务-头等舱。

旅行社是客户

我们有2家航空公司可供选择。

[这2家航空公司Airlines1:dreamLine(Server1),cloudLine(Server2),

此服务器通过命令行/客户端获取请求,并计算其值并将其返回给客户端。例如,server1应该返回200欧元,而server 2应该返回600欧元,计算不是问题,而是2个服务器如何顺序或同时工作]

我的问题是我不知道我应该从分开服务器开始。我已经实现了两个服务器,但是却遇到了一些错误,因为我需要排队或实现另一个Handler,该Handler告诉哪个服务器应该启动或哪个服务器应该首先结束或执行任何操作。我已经用一台服务器试过了,这可以用,但是2个idk我认为他们的问题是打开了2个套接字,这是不允许的,但是我没有找到客户端的任何信息,该客户端向2个不同的服务器发送请求,正相反,许多客户端到一个服务器,但这不是即时消息搜索

如果您想告诉我要使用n台服务器和1个客户端的情况,我应该搜索什么,那将非常好

一次就已经获得各种错误-已在使用的地址:JVM_Bind更多-服务器超时依此类推

这里是我的考试班客户:

公共类客户{

public static void main(String[] args) throws UnknownHostException, IOException {
    int number, temp, temp1, more;
    Scanner sc = new Scanner(System.in);
    Socket s = new Socket("localhost", 1342);
    Scanner sc1 = new Scanner(s.getInputStream());

    System.out.println("enter any number");

    number = sc.nextInt();
    PrintStream p = new PrintStream(s.getOutputStream());
    p.println(number);
    temp = sc1.nextInt();
    System.out.println(temp);
    sc.close();
    s.close();
    sc1.close();
    p.close();


    Scanner sc2 = new Scanner(System.in);
    Socket s2 = new Socket("localhost", 1343);
    Scanner sc3 = new Scanner(s.getInputStream());

    System.out.println("enter any number");

    number = sc.nextInt();
    PrintStream p1 = new PrintStream(s2.getOutputStream());
    p1.println(number);
    more = sc3.nextInt();
    System.out.println(temp);

    System.out.println(temp+ " " +more);
}

}

服务器1:

公共类服务器{

public static void main(String[] args) throws IOException {
    int number;
    int temp;
    ServerSocket s1 = new ServerSocket(1342);
    Socket ss = s1.accept();
    Scanner sc = new Scanner(ss.getInputStream());
    number = sc.nextInt();
    temp = number*2;
    PrintStream p = new PrintStream(ss.getOutputStream());
    p.println(temp);
}

}

server2:

公共类Server2 {

public static void main(String[] args) throws IOException {
    int number;
    int temp;
    ServerSocket s1 = new ServerSocket(1343);
    Socket ss = s1.accept();
    Scanner sc = new Scanner(ss.getInputStream());
    number = sc.nextInt();
    temp = number*10;
    PrintStream p = new PrintStream(ss.getOutputStream());
    p.println(temp);
}

}

无法找到我错过的错误

java sockets server client-server
1个回答
0
投票

您可以使用一个套接字客户端通过以下过程连接到多台服务器:

  1. 使用IP地址连接到server1:端口 <> (打开)
  2. 向服务器1请求数据>> (写入)
  3. 等待来自server1 << (读取)的响应。
  4. 与server1断开连接<> (关闭)

对服务器重复上述步骤2。切记:在对server2使用相同的套接字客户端之前,必须关闭与server1的连接。

© www.soinside.com 2019 - 2024. All rights reserved.