В настоящее время я пытаюсь запрограммировать зашифрованный чат, работающий в моей локальной сети. Это код, в котором я пытаюсь десериализовать полученные данные.EOF-Исключение при десериализации байта [] в JAVA
if (dp.getData() != null) {
try {
empfangen = (ArrayList<byte[]>) Serial.toObject(dp.getData());
} catch (IOException | ClassNotFoundException ex) {
Logger.getLogger(Verbindung.class.getName()).log(Level.SEVERE, null, ex);
}
}
И это метод, который я использую для десериализации этих данных в объект.
public static Object toObject(byte[] bytes) throws IOException, ClassNotFoundException {
ByteArrayInputStream bis = new ByteArrayInputStream(bytes);
ObjectInput in = new ObjectInputStream(bis);
Object o = in.readObject();
in.close();
bis.close();
return o;
}
Однако я получаю EOF-исключение с помощью этого кода, и я не знаю, как его исправить. Может ли кто-нибудь помочь? Это выход:
java.io.EOFException at
java.io.ObjectInputStream$BlockDataInputStream.readFully(ObjectInputStream.java:2754)
at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1688)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1345)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:371)
at java.util.ArrayList.readObject(ArrayList.java:791) at
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497) at
java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1058)
at
java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1900)
at
java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1801)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1351)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:371)
at cryptchat.Serial.toObject(Serial.java:50) at
cryptchat.Verbindung$1.run(Verbindung.java:66)
Как вы писали (с)? И как вы прочитали данные в 'getData()'? – EJP
'public static byte [] toByteArray (Object objekt) throws IOException, ClassNotFoundException { ByteArrayOutputStream bos = new ByteArrayOutputStream(); ObjectOutput out = новый ObjectOutputStream (bos); out.writeObject (objekt); byte [] temp = bos.toByteArray(); out.close(); bos.close(); температура возврата; } ' –
Мы считываем данные через DatagramPacket, это готовый метод calle' .getdata(); ' –