Я пытаюсь передать объект через сокеты с сервера на клиент, что происходит в том случае, если на некоторых компьютерах он работает хорошо, а на других - нет. Объект обновляется бесконечно, поэтому, очевидно, я использую бесконечный цикл для отправки объекта на неопределенный срок. При попытке выполнить клиент отправляет следующую ошибку:
java -jar PC-CheckClient.jar 192.168.1.71 -console
Successfully established connection with server PC-CHECK
Starting... It may take several seconds
jul 11, 2019 1:34:31 AM com.he.pc.view.Main <init>
GRAVE: null
java.io.EOFException
at java.io.ObjectInputStream$BlockDataInputStream.peekByte(Unknown Source)
at java.io.ObjectInputStream.readObject0(Unknown Source)
at java.io.ObjectInputStream.readObject(Unknown Source)
at com.he.pc.view.Main.<init>(Main.java:39)
at com.he.pc.view.Main.main(Main.java:93)
Это код зонда команды объекта с сервера
private void sendData() {
//Declarar, instanciar e inicializar
ObjectOutputStream oos = null;
ServerSocket serverSocket = null;
Socket socket = null;
try {
//Puerto 5000
int puerto = 5000;
serverSocket = new ServerSocket(puerto);
System.out.println("Establishing connection with the PC-CHECK client");
socket = serverSocket.accept();
System.out.println("Successfully established connection");
System.out.println("Starting... It may take several seconds");
oos = new ObjectOutputStream(socket.getOutputStream());
while (true) {
//Obtencion del hardware
this.cpuMain = this.loadCPU();
this.ram = this.loadRAM();
//Envio de datos al pc cliente
oos.writeObject(this.cpuMain);
oos.writeObject(this.ram);
}
} catch (IOException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
} finally {
try {
if(oos != null){
oos.close();
}
if(socket != null){
socket.close();
}
if(serverSocket != null){
serverSocket.close();
}
} catch (IOException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
И вот клиент получает его
public Main(String ip) {
try {
socket = new Socket(ip, 5000);
System.out.println("Successfully established connection with server PC-CHECK");
System.out.println("Starting... It may take several seconds");
ois = new ObjectInputStream(socket.getInputStream());
while(true){
this.cpu = (CPU)ois.readObject();
Utilities.clear();
System.out.println("CPU: ");
System.out.println(cpu.toString());
this.ram = (RAM) ois.readObject();
System.out.println("RAM: ");
System.out.println(this.ram.toString());
}
} catch (IOException | ClassNotFoundException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
}catch (Exception e){
}finally {
try {
if (socket != null) {
socket.close();
}
if (ois != null) {
ois.close();
}
} catch (IOException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
У меня вопрос, как я могу решить эту ошибку и убедиться, что все компьютеры работают нормально?
Спасибо