mccae
Senfdazugeber
Hallo!
Leider erhalte ich zufällig EOF Exceptions, wenn ich aus einem ObjectInputStream lese.
Der Stacktrace lautet:
Ich verfahre wie folgt:
Ich verbinde mich mit dem Server auf localhost.
Danach werden die Streams erstellt.
Bei meinem Beispiel wird auf beiden Seiten jeweils ein Mal gelesen, und ein Mal geschrieben.
Danach wird der Socket ordungsgemäß geschlossen.
Mein Problem ist jetzt, dass ab und zu (nach 2-5 Mal aufrufen des Client codes) EOF Exceptions auftreten (beim Client).
Auf der Serverseite ist tritt dann folgender Fehler auf:
Warum da "Socket closed" steht, kann ich mir nicht erklären.
Denn Verbindungsfehler sind ausgeschlossen, da alles über localhost läuft.
Warum diese Fehler auch nur ab und zu auftreten, ist mir ein Rätsel.
Beim Debuggen tritt das Problem komischerweise nie auf...
Kann mir jemand helfen?
mfg,
Martin
Leider erhalte ich zufällig EOF Exceptions, wenn ich aus einem ObjectInputStream lese.
Der Stacktrace lautet:
Code:
Exception in thread "main" java.io.EOFException
at java.io.ObjectInputStream$BlockDataInputStream.peekByte(Unknown Source)
at java.io.ObjectInputStream.skipCustomData(Unknown Source)
at java.io.ObjectInputStream.readNonProxyDesc(Unknown Source)
at java.io.ObjectInputStream.readClassDesc(Unknown Source)
at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
at java.io.ObjectInputStream.readObject0(Unknown Source)
at java.io.ObjectInputStream.readObject(Unknown Source)
at ****.net.debug.DummyClient.main(DummyClient.java:70)
Ich verfahre wie folgt:
Ich verbinde mich mit dem Server auf localhost.
Danach werden die Streams erstellt.
Java:
Socket s = new Socket(InetAddress.getLocalHost(),5667);
ObjectOutputStream oos = new ObjectOutputStream(s.getOutputStream());
ObjectInputStream ois = new ObjectInputStream(new BufferedInputStream(s.getInputStream()));
Bei meinem Beispiel wird auf beiden Seiten jeweils ein Mal gelesen, und ein Mal geschrieben.
Java:
oos.writeObject(someObject);
oos.flush();
ois.readObject();
Danach wird der Socket ordungsgemäß geschlossen.
Mein Problem ist jetzt, dass ab und zu (nach 2-5 Mal aufrufen des Client codes) EOF Exceptions auftreten (beim Client).
Auf der Serverseite ist tritt dann folgender Fehler auf:
Code:
[04/04/2010|00:08:17] An IOException occured while writing to a client:
java.net.SocketException: Socket closed
at java.net.SocketOutputStream.socketWrite(Unknown Source)
at java.net.SocketOutputStream.write(Unknown Source)
at java.io.ObjectOutputStream$BlockDataOutputStream.drain(Unknown Source)
at java.io.ObjectOutputStream$BlockDataOutputStream.setBlockDataMode(Unknown Source)
at java.io.ObjectOutputStream.writeNonProxyDesc(Unknown Source)
at java.io.ObjectOutputStream.writeClassDesc(Unknown Source)
at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
at java.io.ObjectOutputStream.writeObject0(Unknown Source)
at java.io.ObjectOutputStream.writeFatalException(Unknown Source)
at java.io.ObjectOutputStream.writeObject(Unknown Source)
at ***.net.daemon.ClientOutputThread.run(ClientOutputThread.java:54)
at java.lang.Thread.run(Unknown Source)
Warum da "Socket closed" steht, kann ich mir nicht erklären.
Denn Verbindungsfehler sind ausgeschlossen, da alles über localhost läuft.
Warum diese Fehler auch nur ab und zu auftreten, ist mir ein Rätsel.
Beim Debuggen tritt das Problem komischerweise nie auf...
Kann mir jemand helfen?
mfg,
Martin
Zuletzt bearbeitet: