StreamCorruptedException: неверный код типа: AC
Моя проблема, когда он пытается прочитать объект во второй раз, он выдает исключение:
java.io.StreamCorruptedException: invalid type code: AC
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1356)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
at Client.run(BaseStaInstance.java:313)
java.io.StreamCorruptedException: invalid type code: AC
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1356)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
at Client.run(BaseStaInstance.java:313)
В первый раз я отправляю одно и то же объектное сообщение; однако, когда я пытаюсь сделать то же самое во второй раз, выдает ошибку выше. Нужно ли повторно инициализировать метод readObject ()? Я даже распечатал объект сообщения, получаемый в строке ниже, и он точно такой же, как и первый экземпляр, где он работает нормально.
Object buf = myInput.readObject();
Я предполагаю, что есть некоторые проблемы с добавлением, но у меня действительно нет никакого смысла для добавления. Я просто хочу читать свежую строку каждый раз. Я бы очень признателен за помощь в исправлении этой ошибки. Спасибо.
==================================
Перед этой строкой я просто создаю объекты ввода и вывода для сокета в методе run (). Объявление объекта находится вне метода run () в классе:
@Override
public void run() {
try {
sleep((int) 1 * 8000);
} catch (Exception e) {
e.printStackTrace();
}
try {
//Creating input and output streams to transfer messages to the server
myOutput = new ObjectOutputStream(skt.getOutputStream());
myInput = new ObjectInputStream(skt.getInputStream());
while (true) {
buf = myInput.readObject();
}
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
} catch (Exception e) {
e.printStackTrace();
}
}
}
Ты прав; Я не закрываю объект. Я не уверен, как это сделать.