如何实现 2 个不同的服务器,它们被具有相同对象的客户端调用
How to implement 2 different servers, which get called by client with the same object
嘿,我正在做一些练习,这里是要了解的背景。
想象你是一家旅行社
-您必须为您的客户搜索最便宜的航班
-他们告诉你他们飞行了多少英里
-他们想坐在哪个区域,默认 - 业务 - 第一class。
旅行社是客户
有2家航空公司可供选择。
这 2 家航空公司 airline1:dreamLine (Server1), cloudLine(Server2),
此服务器通过 commandline/client 获取请求并计算它们的值,然后 return 将其发送给客户端。
例如服务器 1 应该 return 200 欧元,服务器 2 应该 return 600 欧元,
计算不是问题,更多的是 2 个服务器如何按顺序或同时工作
我的问题是我不知道应该从哪里开始分离服务器。
我已经实现了两个服务器,但我遇到了一些错误,因为我需要创建一个队列或实现一个进一步的处理程序,它告诉应该启动哪个服务器或哪个服务器应该先结束或做任何事情。
我已经用一台服务器试过了,这有效,但是 2 idk
我认为他们的问题是打开了 2 个套接字,这是不允许的,但我没有找到任何关于将请求发送到 2 个不同服务器的客户端的信息,只是相反,许多客户端到一个服务器,但这不是我的意思搜索
当我想使用 n 个服务器和 1 个客户端时,如果你能告诉我应该搜索什么,那就太好了
曾经遇到过各种错误
- 地址已被使用:JVM_Bind
更多的
-服务器超时
等等
这是我的测试 classes
客户:
public class 客户 {
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 class 服务器 {
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 class 服务器 2 {
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);
}
}
找不到我错过的错误
您可以使用一个套接字客户端连接到多个服务器,过程如下:
- 使用 ip 地址连接到服务器 1:端口 <> (打开).
- 向server1请求数据>> (写入).
- 等待服务器 1 的响应 << (读取).
- 断开服务器 1 <> (关闭).
对服务器 2 重复上述步骤。
请记住:在为服务器 2 使用相同的套接字客户端之前,您必须关闭与服务器 1 的连接。
所有客户端服务器免费示例,包含 2 个服务器和 1 个客户端:
在你 运行 客户端之前,你必须先 运行 服务器然后才能从客户端开始
public class 客户 {
public static void main(String[] args) throws UnknownHostException, IOException, InterruptedException {
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);
s.close();
System.out.println("Server 1 closed!");
Scanner scc = new Scanner(System.in);
s = new Socket("localhost", 2555);
Scanner sc2 = new Scanner(s.getInputStream());
System.out.println("enter any number");
number = scc.nextInt();
p = new PrintStream(s.getOutputStream());
p.println(number);
more = sc2.nextInt();
System.out.println(more);
System.out.println(temp+ " " +more);
}
}
public class 服务器 {
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);
}
}
public class 服务器 2 {
public static void main(String[] args) throws IOException {
int number;
int temp;
ServerSocket s1 = new ServerSocket(2555);
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);
}
}
嘿,我正在做一些练习,这里是要了解的背景。 想象你是一家旅行社
-您必须为您的客户搜索最便宜的航班
-他们告诉你他们飞行了多少英里
-他们想坐在哪个区域,默认 - 业务 - 第一class。
旅行社是客户
有2家航空公司可供选择。
这 2 家航空公司 airline1:dreamLine (Server1), cloudLine(Server2),
此服务器通过 commandline/client 获取请求并计算它们的值,然后 return 将其发送给客户端。 例如服务器 1 应该 return 200 欧元,服务器 2 应该 return 600 欧元, 计算不是问题,更多的是 2 个服务器如何按顺序或同时工作
我的问题是我不知道应该从哪里开始分离服务器。 我已经实现了两个服务器,但我遇到了一些错误,因为我需要创建一个队列或实现一个进一步的处理程序,它告诉应该启动哪个服务器或哪个服务器应该先结束或做任何事情。 我已经用一台服务器试过了,这有效,但是 2 idk 我认为他们的问题是打开了 2 个套接字,这是不允许的,但我没有找到任何关于将请求发送到 2 个不同服务器的客户端的信息,只是相反,许多客户端到一个服务器,但这不是我的意思搜索
当我想使用 n 个服务器和 1 个客户端时,如果你能告诉我应该搜索什么,那就太好了
曾经遇到过各种错误 - 地址已被使用:JVM_Bind 更多的 -服务器超时 等等
这是我的测试 classes 客户:
public class 客户 {
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 class 服务器 {
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 class 服务器 2 {
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);
}
}
找不到我错过的错误
您可以使用一个套接字客户端连接到多个服务器,过程如下:
- 使用 ip 地址连接到服务器 1:端口 <> (打开).
- 向server1请求数据>> (写入).
- 等待服务器 1 的响应 << (读取).
- 断开服务器 1 <> (关闭).
对服务器 2 重复上述步骤。 请记住:在为服务器 2 使用相同的套接字客户端之前,您必须关闭与服务器 1 的连接。
所有客户端服务器免费示例,包含 2 个服务器和 1 个客户端: 在你 运行 客户端之前,你必须先 运行 服务器然后才能从客户端开始
public class 客户 {
public static void main(String[] args) throws UnknownHostException, IOException, InterruptedException {
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);
s.close();
System.out.println("Server 1 closed!");
Scanner scc = new Scanner(System.in);
s = new Socket("localhost", 2555);
Scanner sc2 = new Scanner(s.getInputStream());
System.out.println("enter any number");
number = scc.nextInt();
p = new PrintStream(s.getOutputStream());
p.println(number);
more = sc2.nextInt();
System.out.println(more);
System.out.println(temp+ " " +more);
}
}
public class 服务器 {
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);
}
}
public class 服务器 2 {
public static void main(String[] args) throws IOException {
int number;
int temp;
ServerSocket s1 = new ServerSocket(2555);
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);
}
}