【发布时间】:2019-03-23 23:45:41
【问题描述】:
我正在通过套接字做一个程序,从单个客户端到多个服务器,在互联网上我没有找到有关此的信息
该系统由将多个服务器连接到单个客户端组成,客户端必须向用户请求一个数字,然后在服务器中,使用该数字执行一个算法,该算法将找到介于 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);
}
}
问题是,如何将多个服务器连接到一个客户端,以便它们开始同步?
谢谢
更新
我修改了客户端的main方法,原因如下:
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();
【问题讨论】:
-
它是什么?根据您的标题,单个服务器,多个客户端?还是单个客户端,多个服务器,根据您的问题?
-
@user207421 一个客户端,多个服务器连接到该客户端
-
对不起,标题已经更正了