StreamCorruptedException

flashray

Erfahrenes Mitglied
Hallo,

bin am Programmieren eines Client/Server Spiels. Da tritt manchmal ein StreamCorruptedException auf.

Kann damit nix anfangen. Wie kann man das behandeln?


Vg Erdal
 
Das dürfte von der Serialisierung kommen. Es ist gut möglich, dass der Sender nicht alles in den Socket-Stream geschickt hat und Daten in einem Puffer verweilen und so Daten auf der anderen Seite fehlen. Die Lösung wäre flush() aufzurufen.

Grüße

Christian
 
Hallo,

es kann auch sein, dass du falsch serialisierst... bzw. du readObject / writeObject falsch implementiert hast
und somit "ungültige Instanzen" baust.

Beispiel:
Stell dir vor du hast ne Klasse die im Konstruktor prüft ob die Parameter in bestimmten Grenzen liegen.
Nun geht die Java (De)Serialisierung hin und ruft diesen Konstrutkor nicht auf sondern initialisiert die
Attribute per unter dem Radar via Reflection ( http://www.tutorials.de/forum/java/269553-objekt-instanz-erzeugen-ohne-konstruktor-aufzurufen.html ). Dabei wird dann dieser Check umgangen. Um dieses Problen zu umgehen sollte man die
Parameterchecks die man auf die Konstrutorparameter anwendet auch in readObject() implementieren.
(Siehe auch Source Code der Klasse BigInteger... readObject())

Gruß Tom
 
Zurück