Хи, я делаю некоторые упражнения, вот фон, чтобы знать. представьте, что вы - туристическое агентство
- вам нужно найти самый дешевый рейс для ваших клиентов
- они скажут вам, сколько миль они совершили полет
- в какую область онихочу сидеть, по умолчанию - бизнес - первый класс.
туристическое агентство является клиентом
, и есть 2 авиакомпании, где мы можем выбрать.
это 2 авиакомпании Airlines1: DreamLine (Server1), cloudLine (Server2),
эти серверы получают запрос через командную строку / клиент и рассчитывают их значение и возвращают его клиенту. просто например, server1 должен вернуть 200 €, а сервер 2 должен вернуть 600 €, расчет не является проблемой, больше того, как 2 сервера могут работать последовательно или одновременно
Моя проблема в том, что я не знаю, с чего начать, разделив серверы. ,Я уже реализовал оба сервера, но я получаю некоторые ошибки, потому что мне нужно создать очередь или реализовать дополнительный обработчик, который сообщает, какой сервер должен запуститься или какой сервер должен закончиться первым или что-то сделать. я уже пробовал только с одним сервером, это работает, но 2 idk, я думаю, они выпускают это то, что есть 2 открытых сокета, и это не разрешено, но я не нашел никакой информации для клиента, который отправляет запрос на 2 разных сервера, простос другой стороны, много клиентов на одном сервере, но это не то, что я ищу для
, было бы замечательно, если бы вы могли сказать мне, что я должен искать, когда я хочу работать с n серверами и только 1 клиентом
однажды уже получал различные ошибки: -адрес уже используется: JVM_Bind больше -сервер истек и т. Д.
здесь мой клиент тестовых классов:
открытый класс Client {
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:
публичный класс Server {
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:
publicclass 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);
}
}
не могу найти ошибку, что я пропускаю