当前位置: 首页 > 知识库问答 >
问题:

如何实现两个不同的服务器,它们被同一个对象的客户端调用

相威
2023-03-14

嗨,我在做一些练习,以下是我要了解的背景知识。想象你是一家旅行社

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

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

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

旅行社是客户

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

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

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

我的问题是,我不知道从哪里开始分离服务器。我已经实现了这两个服务器,但我得到了一些错误,因为我需要创建一个队列或实现一个进一步的处理程序,告诉哪个服务器应该启动,哪个服务器应该首先结束,或者做任何事情。我已经在一台服务器上试过了,这很管用,但2 idk我想他们的问题是,有两个套接字打开了,这是不允许的,但我没有找到一个客户端的任何信息,该客户端向两个不同的服务器发送请求,另一种方式是,多个客户端到一台服务器,但这不是我搜索的内容

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

曾经出现过各种错误——地址已经在使用中:JVM_绑定更多——服务器超时等等

这里是我的测试类客户端:

公共类客户端{

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

}

服务器2:

公共类服务器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);
}

}

找不到我错过的错误

共有2个答案

俞涵涤
2023-03-14

免费适用于所有客户端服务器示例,有2台服务器和只有1台客户端:在运行客户端之前,您必须先运行服务器,而不是从客户端开始

公共类客户端{

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

}

仲孙奇
2023-03-14

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

  1. 连接到ip地址为port的server1

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

 类似资料:
  • 问题内容: 我正在使用RMI编写密码系统的原型。 我有一个问题,因为当我启动两个客户端时,它们从OneTimePad类的服务器中的一个对象获得了响应。 因此客户端A获取为客户端b保留的密钥,由于特定的算法,这种情况不会发生。 服务器仅向客户端发送E和N变量(例如在RSA中),因此我无法序列化OneTimePad对象并通过网络发送它(因为它将具有所有密钥)。 如何为每个客户端创建OneTimePad

  • 例如,我有两个心率监视器与我的平板电脑配对。我正在使用这样的代码来获取HRM设备列表: 然后,我在GUI中显示一个列表框,其中包含从设备[I]获取的设备名称。名称例如,我选择索引为0的设备。然后我可以访问it人力资源服务和人力资源管理特征: 除了心率,我还需要电池状态。如何访问同一(已选择)设备的电池服务?

  • 我有一个监听两个不同端口的TCP服务器。我创建了两个不同的套接字,一个在端口8888上,一个在端口6634上。我监听这些端口,然后我在FD_SET中添加两个套接字,并将它们传递给Select()函数...当套接字准备好读取时,我检查FD_ISSET,看看哪个端口上有消息要读取。 不管怎样,当我连接到8888端口时,构思是成功的,我可以向服务器发送和接收。。。当我在客户端ctrl c时,选择函数再次

  • 我正在开发一个具有多个客户端的标准java RMI服务器。这些客户机有一个菜单,在那里他们可以调用服务器为他们做各种事情。 一种方法涉及一个队列,他们可以在其中将作业发送到队列并等待它得到处理。RMI服务器自动为所有客户端处理线程,但当涉及到此方法和队列时,我如何阻止此请求,例如: 首先调用客户端1,然后再调用客户端2(此处客户端1应首先从服务器接收消息,客户端2应等待服务器处理客户端1请求所需的

  • 本文向大家介绍Java编程Socket实现多个客户端连接同一个服务端代码,包括了Java编程Socket实现多个客户端连接同一个服务端代码的使用技巧和注意事项,需要的朋友参考一下 Java Socket(套接字)通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄。应用程序通常通过"套接字"向网络发出请求或者应答网络请求。 使用Socket实现多个客户端和同一客户端通讯;首先客户端连接

  • 我正在尝试调试应用程序的流程。因此在这个过程中,我需要调试两个运行在两个不同tomcat服务器上的应用程序(其中一个应用程序中的方法调用不同应用程序的另一个方法)。我如何在eclipse中实现这一点(可能吗)? 注意:这两个应用程序都在同一个eclipse实例中,没有任何调试配置。