PDA

Visualizza la versione completa : [JAVA] EOFException


koala81
01-12-2005, 18:20
Help me!!!
Come risolvo questa eccezione???

protected void listen() throws IOException {
ObjectInputStream iObjStream = new ObjectInputStream( iStream ) ;
NodeMessage message ;
while ( true ) {
try {
message = (NodeMessage) iObjStream.readObject();
handleMessage(message);
} catch (ClassNotFoundException e) {
e.PrintStackTrace();
}
}
}

Ho provato a mettere un If per vedere se iObjStream.readObject() è diverso da null, ma non funziona!!!

Matteo982
01-12-2005, 18:30
Proverei così:


protected void listen(){
try {
ObjectInputStream iObjStream = new ObjectInputStream( iStream ) ;
NodeMessage message ;
while ( true ) {
message = (NodeMessage) iObjStream.readObject();
handleMessage(message);
} catch (Exception e) {
e.PrintStackTrace();
}
}

Ma non sono sicurissimo del risultato! :master:

Ciao. :ciauz:

koala81
02-12-2005, 14:15
Ho provato ma non funziona...

enzom83
02-12-2005, 20:06
aggiungi questi catch

catch(EOFException eof) { eof.printStackTrace(); }
catch(Exception e) { e.printStackTrace() }
:ciauz:

koala81
03-12-2005, 21:13
Niente... sigh

koala81
03-12-2005, 21:56
mi spiego meglio...

ho un server ed un client...il server deve stare perennemente in ascolto il client aspettando che di tanto in tanto il client gli mandi dei messaggi (che sono istenze di una classe). Per far ciò ho fatto un ciclo infinito in cui con la .readObject devo leggere i messaggi.

Ma quando invio il messaggio, dal client mi esce scritto:

java.io.EOFException
at java.io.ObjectInputStream$BlockDataInputStream.pee kByte(ObjectInputStream.java:2435)
at java.io.ObjectInputStream.readObject0(ObjectInputS tream.java:1245)
at java.io.ObjectInputStream.readObject(ObjectInputSt ream.java:324)
at netserver.net.MessageReceiver.run(MessageReceiver. java:24)

che significa? io l'ho interpretato come il server che legge sul canale anche quando il messaggio non è stato ancora spedito, ma non ho ottenuto niente...qualcuno può aiutarmi???
Grazie

Matteo982
04-12-2005, 00:47
Beh contrariamente a quanto si pensava prima il problema non è la gestione delle eccezioni quindi il try catch puramente non ti risolve il problema.
Devi andare a cercare cosa fa la parte di codice che ti segnala, in pratica da questo


at java.io.ObjectInputStream$BlockDataInputStream.pee kByte(ObjectInputStream.java:2435)
at java.io.ObjectInputStream.readObject0(ObjectInputS tream.java:1245)
at java.io.ObjectInputStream.readObject(ObjectInputSt ream.java:324)
at netserver.net.MessageReceiver.run(MessageReceiver. java:24)

se non sbaglio, dovrebbe voler dire che il problema sta qui:


at java.io.ObjectInputStream$BlockDataInputStream.pee kByte(ObjectInputStream.java:2435)

Quindi devi vedere che fa di preciso questo pezzo di codice e pensare perchè ti da una eccezione sulla fine del file, magari non chiude lo stream quando deve o non so... :master:

Ciao. :ciauz:

Loading