Java: read.Object()

di il
6 risposte

Java: read.Object()

Ciao,
sto sviluppando una semplice chat e per far questo utilizzo una connessione client server tramite socket tcp.

Il mio problema è quando cerco di inviare un oggetto dal client al server, in particolare:

Nel client eseguo
OutputStream os = new FileOutputStream("file_client.data");         
ObjectOutputStream oos = new ObjectOutputStream(os);
oos.writeObject(join_client);                                          //Oggetto che invio al server
oos.flush();
Nel server

InputStream is = new FileInputStream("file_client.data");
ObjectInputStream ois = new ObjectInputStream(is);
Join instance = (Join) ois.readObject();
Eseguendo così l'applicazione mi viene restituita un'eccezione "Errore: java.io.EOFException", posso inutire sia riferita ad un EndOfFile ma non capisco dove sia l'errore.

Inoltre, cosa strana che mi fa pensare ulteriormente è che utilizzando due file differenti per il client ed il server (cioè il server legge un file diverso da quello scritto dal client), il problema non si presenta ed il file viene letto correttamente!

Qualcuno saprebbe aiutarmi?
Grazie

6 Risposte

  • Re: Java: read.Object()

    Chiudi il flusso dopo l'inivio o fai solo il flush?
  • Re: Java: read.Object()

    Scusami, parli di tcp e lavori con FILE input/output stream? Per le comunicazione tramite TCP servono le Socket!
  • Re: Java: read.Object()

    zaknafein83 ha scritto:


    chiudi il flusso dopo l'inivio o fai solo il flush?
    no faccio solo il flush. Devo fare altro?
  • Re: Java: read.Object()

    Della ha scritto:


    Scusami, parli di tcp e lavori con FILE input/output stream? Per le comunicazione tramite TCP servono le Socket!
    Si infatti uso le socket. Il problema che mi dava era che tramite le socket non riuscivo ad inviare l'oggetto, sicuramente sbagliavo qualcosa ma non riusciendo a saltarci fuori, ho ovviato in questo modo che a quanto pare non risulta meno problematico!
  • Re: Java: read.Object()

    mery30 ha scritto:


    zaknafein83 ha scritto:


    chiudi il flusso dopo l'inivio o fai solo il flush?
    faccio il flush e chiudo sia oos che os. Devo fare altro?
  • Re: Java: read.Object()

    Ti faccio una domanda (forse) stupida: Join immagino sia una classe che tu hai definito. In tal caso essa implementa serializable?

    Comunque a me con questo codice funziona:
    
    
    		ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("file.ser"));
    		
    		MyObj obj = new MyObj("prova");
    		
    		oos.writeObject(obj);
    		
    		oos.flush();
    		oos.close();
    		
    		ObjectInputStream ois = new ObjectInputStream(new FileInputStream("file.ser"));
    		MyObj obj2 = (MyObj) ois.readObject();
    		
    		System.out.println(obj2.toString());
    		ois.close();
    
    L'eccezione EOFException mi capita solo se tento di leggere un file vuoto..hai controllato che effettivamente l'oggetto venga scritto sul file?
Devi accedere o registrarti per scrivere nel forum
6 risposte