StreamCorruptedException/EOFException - invalid type code: 00

Danielku15

Erfahrenes Mitglied
Hallo Miteinander.

Ich habe gerade ein gröberes Problem bei unserer Semesterarbeit. Es handelt sich dabei um eine Server-Client Applikation welche über "interface INetworkMessage extends Serializable" Implementationen miteinander kommunizieren. Die Objekte werden über ObjectOutputStream und ObjectInputStream serialisiert. Gesendet werden die Instanzen über :

Java:
private void submitMessage(INetworkMessage data) {
    try {
        _objectOutputStream.writeUnshared(data);
        _objectOutputStream.flush();
    } catch (IOException e) {
        e.printStackTrace();
        _connectionLost.fireEvent(new NetworkGameClientEventArgs(
                getClientUid()));
        setRunning(false);
    }
}

Gelesen werden die Objekte dann wieder mit

Java:
Object o = _objectInputStream.readUnshared();
if (o == null) continue;
if (!(o instanceof INetworkMessage)) {
    System.out.printf("Got an unknown object: %s%n", o);
    continue;
}
INetworkMessage msg = (INetworkMessage) o;
...

Seltsamerweise wird beim Lesen diese Exception geworfen:
Java:
java.io.StreamCorruptedException: invalid type code: 00
	at java.io.ObjectInputStream.readObject0(Unknown Source)
	at java.io.ObjectInputStream.readUnshared(Unknown Source)
	at at.kubatsch.util.NetworkMessageController.messageReaderLoop(NetworkMessageController.java:202)
	at at.kubatsch.util.NetworkMessageController.access$0(NetworkMessageController.java:195)
	at at.kubatsch.util.NetworkMessageController$1.run(NetworkMessageController.java:110)
	at java.lang.Thread.run(Unknown Source)
java.io.EOFException
	at java.io.ObjectInputStream$BlockDataInputStream.peekByte(Unknown Source)
	at java.io.ObjectInputStream.readClassDesc(Unknown Source)
	at java.io.ObjectInputStream.readObject0(Unknown Source)
	at java.io.ObjectInputStream.readUnshared(Unknown Source)
	at at.kubatsch.util.NetworkMessageController.messageReaderLoop(NetworkMessageController.java:202)
	at at.kubatsch.util.NetworkMessageController.access$0(NetworkMessageController.java:195)
	at at.kubatsch.util.NetworkMessageController$1.run(NetworkMessageController.java:110)
	at java.lang.Thread.run(Unknown Source)

Woran kann das Problem liegen? Wird evtl. aufs Versehen wo der Socket/Stream geschlossen oder woher kann diese EOFException kommen?
Bin echt mit meinem Latein am Ende.

Kann mir da jemand ne Hilfestellung geben?

Grüße Daniel
 
Ich fürchte du musst uns noch etwas mehr infos geben:
Wie heißt die Methode, in der gelesen wird? (und in welcher Zeile wird die Exception geworfen?)
Wie sieht die Schleife aus, in der gelesen wird?

Sieht schon so aus als würde die Verbindung abbrechen, zumindest wegen der StreamCorruptedException…
Kannst du Objekte erfolgreich übertragen (kommt die Exception bei jedem serialisiert übertragenen Object?
 
Zurück