gpt4 book ai didi

java - 如何实现两个不同的服务器,由客户端使用相同的对象调用

转载 作者:行者123 更新时间:2023-12-01 21:48:17 25 4
gpt4 key购买 nike

嘿,我正在做一些练习,这是要了解的背景。假设您是一家旅行社

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

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

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

旅行社是客户

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

这2家航空公司airline1:dreamLine(服务器1),cloudLine(服务器2),

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

我的问题是我不知道应该从哪里开始分离服务器。我已经实现了两个服务器,但出现了一些错误,因为我需要创建一个队列或实现另一个处理程序,它告诉哪个服务器应该启动或哪个服务器应该首先结束或执行任何操作。我已经用一台服务器尝试过,这可以工作,但是需要 2 个 idk我认为他们的问题是打开了 2 个套接字,这是不允许的,但我没有找到向 2 个不同服务器发送请求的客户端的任何信息,只是另一种方式,许多客户端到一个服务器,但这不是我的意思搜索中

当我想使用 n 个服务器和 1 个客户端时,如果你能告诉我应该搜索什么,那就太好了

曾经出现过各种错误-地址已在使用:JVM_Bind更多的- 服务器超时等等

这是我的测试类(class)客户:

公共(public)类客户端{

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)类服务器{

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

}

服务器2:

公共(public)类 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);
}

}

找不到我错过的错误

最佳答案

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

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

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

关于java - 如何实现两个不同的服务器,由客户端使用相同的对象调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58774870/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com