Java StreamCorruptedException - PullRequest
       7

Java StreamCorruptedException

0 голосов
/ 01 апреля 2009

У меня есть клиентское и серверное приложение, которое передает сообщения с использованием сериализации по TCP Я получил следующую ошибку при десериализации объекта:

Есть ли какие-либо идеи относительно причины или возможных последующих шагов в анализе этой проблемы?

java.io.StreamCorruptedException: invalid stream header: 383D4649
    at java.io.ObjectInputStream.readStreamHeader(Unknown Source)
    at java.io.ObjectInputStream.<init>(Unknown Source)
    at com.aqua.NmsApi.ResiliantTCPServer$ServerThread.run(ResiliantTCPServer.java:248)
    at java.lang.Thread.run(Unknown Source)

Ответы [ 3 ]

1 голос
/ 01 апреля 2009

Для этого есть две возможные причины:

  • Поток фактически поврежден (то есть то, что вы читаете, отличается от того, что вы написали на другом конце). В этом случае вы должны записать в локальный файл каждое содержимое (отправленное и полученное) и сравнить их.

  • Магические числа, требуемые реализацией (-ями) ObjectInputStream, в которой вы используете, различны с обеих сторон, например, потому что вы используете разные версии базовых пакетов Java. Эти константы объявлены в ObjectStreamConstants, вы должны проверить их.

1 голос
/ 01 апреля 2009

Что-то не так с магическим числом в начале сериализованных данных. Вам, вероятно, понадобится захватить сериализованные данные и просмотреть их для начала. Этот поток ascii '8 = FI'.

0 голосов
/ 01 апреля 2009

вы используете ровно один ObjectInput / OutputStream на сокет Input / OutputStream? воссоздание их в одном и том же потоке ввода-вывода является частой причиной такой ошибки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...