Я делаю программу по сокетам, от одного клиента до нескольких серверов, в интернете я не нашел информации об этом
Система состоит из подключения нескольких серверов к одному клиенту, клиент должен запросить число у пользователя, затем на сервере с этим номером будет выполнен алгоритм, который найдет число простых чисел от 0 до N, после этого время выполнения алгоритма вычисляется, а затем отправляется клиенту. Каждый раз каждый сервер отправляется клиенту, и клиент сохраняет их.
Проблема в том, что это соединение должно быть одновременным между желаемым количеством серверов, в дополнение к синхронизации этого соединения.
На данный момент я сделал простой код от клиента до сервера.
ГЛАВНЫЙ СЕРВЕР
public class Main {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
Server s = new Server(5000, "Hilo servidor");
s.start();
}
}
МОДУЛЬНЫЙ СЕРВЕР
Это метод, который находится внутри класса сервера, этот класс выполняет алгоритм для подсчета количества двоюродных братьев и отправки этого времени клиенту. Он запускается при вызове c.start () на главном сервере
private void startServer() {
try {
ServerSocket ss = new ServerSocket(port);
System.out.println("Esperando Conexion");
Socket socket = ss.accept();
DataInputStream in = new DataInputStream(socket.getInputStream());
int n = in.readInt();
long time = encontrarPrimeros(n);
DataOutputStream out = new DataOutputStream(socket.getOutputStream());
out.writeLong(time);
System.out.println(time);
} catch (IOException ex) {
Logger.getLogger(Server.class.getName()).log(Level.SEVERE, null, ex);
}
}
ГЛАВНЫЙ КЛИЕНТ
public class Main {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
Client c = new Client("Hilo cliente", 5000, "192.168.0.19");
c.start();
}
}
МОДУЛЬ КЛИЕНТА
private void startClient() {
try {
Socket socket = new Socket(ip, port);
DataOutputStream out = new DataOutputStream(socket.getOutputStream());
System.out.println("Ingrese dato...");
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
out.writeInt(n);
DataInputStream in = new DataInputStream(socket.getInputStream());
long tiempo = in.readLong();
System.out.println(tiempo);
socket.close();
} catch (IOException ex) {
Logger.getLogger(Client.class.getName()).log(Level.SEVERE, null, ex);
}
}
Проблема в том, как подключить несколько серверов к клиенту, чтобы они начали синхронизироваться?
Спасибо
Обновление
Я изменил основной метод клиента, из-за этого:
public class Main {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
Client c = new Client("Hilo cliente", 5000, "192.168.0.19");
Client c2 = new Client("Hilo cliente", 5000, "192.168.0.19");
c.start();
c2.start();
}
}
Но при выполнении я получаю следующую ошибку:
mar 23, 2019 7:14:10 PM Client startClient
GRAVE: null
java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(SocketInputStream.java:210)
at java.net.SocketInputStream.read(SocketInputStream.java:141)
at java.io.DataInputStream.readFully(DataInputStream.java:195)
at java.io.DataInputStream.readLong(DataInputStream.java:416)
at Client.startClient(Client.java:69)
at Client.run(Client.java:41)
at java.lang.Thread.run(Thread.java:748)
Инструкция по выполнению ошибки следующая: long tiempo = in.readLong();