Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di Zalex
    Registrato dal
    Aug 2001
    Messaggi
    357

    ObjectInput/OutputStream (Java)

    salve raga,
    sto implementando una struttura client/server in Java e ho la necessita di avere un flusso di oggetti;
    Java mette a disposizione ObjectInputStream e ObjectOutputStream,
    pero' non riesco a farlo funzionare,cioe' il tutto compila e non da nessun errore a run-time,ma quando richiedo l'operazione
    writeObject (o readObject) si impalla tutto!
    un esempio semplice:

    //creo socket
    OutputStream os=socket.getOutputStream()
    ObjectOutputStream objOs=new ObjectOutputStream(os);
    Vector v=new Vector();
    //popolo il vettore v
    objOs.writeObject(v);

    //lettura
    Vector vr=(Vector)objIs.readObject();

    naturalmente objIs e' un ObjectInputStream creato sun uno stream di input!

    cosa sbaglio?
    grazie 1000 in anticipo ciao

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2002
    Messaggi
    315
    A quanto ne so c'e' un problema con gli ObjectStream, non credo che sia un bug, ma solo il modo con cui essi si comportano.
    L'ordine con cui li crei deve essere opposto nel client e nel server, per cui se nel client costruisci per primo l'output stream, nel server devi costruire per primo l'input, poi nel client costruisci l'input e nel server l'output.
    Questo perche' i due oggetti (input e output) hanno bisogno di leggere un'informazione contenuta nell'header fornito dall'interlocutore.

    Scusa se sono stato vago, ma non ricordo di preciso i particolari, so che a suo tempo ho avuto lo stesso problema nell' utilizzare questo tipo di stream. Prova quindi ad invertire l'ordine di costruzione, se poi il problema e' proprio quello: nella documentazione della Sun ci sono tutti i dettagli (o forse era un commento che avevo trovato nei sorgenti... non ricordo).

    Fammi sapere. Ciao.
    Ciao,
    Lorenzo

  3. #3
    Utente di HTML.it L'avatar di Zalex
    Registrato dal
    Aug 2001
    Messaggi
    357
    grazie x la risposta intanto

    ho provato come mi hai detto ma non funge lo stesso!
    anche xche io creo un ObjectOutputStream sul server e un ObjectInputStream sul client,in quanto mi serve solo che il server manda un Vector al client e basta!tutto il resto lo faccio con DataInput/OutputStream

    ho provato anche a costruire ugualmente un ObjectInputStream sul server e un ObjectOutputStream sul client anche se non li utilizzo, ma il risultato e' lo stesso

    porca miseria

  4. #4
    Ricorda che qualunque oggetto viene mandato sull' ObjectOutputStream deve implementare l'interfaccia Serializable. Vector lo fa, lo fanno tutti gli oggetti che ci metti dentro ( e gli oggetti a cui questi fanno riferimento che vengono anch'essi serializzati ) ?
    S.O. : Ubuntu 5.04
    Lang : J2*E,PHP,tcl/tk

  5. #5
    Utente di HTML.it L'avatar di Zalex
    Registrato dal
    Aug 2001
    Messaggi
    357
    si lo so, ma non e' un problema xche Vector implementa Serializable e il vettore contiene stringhe e anche String implementa Serializable!
    ho scoperto che il proplema non nasce quando cerco di scrivere (con writeObject), ma addirittura quando cerco di creare lo stream ObjectOutputStream, cioe l'istruzione
    ObjectOutputStream objOs=new ObjectOutputStream(os);
    si blocca!
    non riesco a capire xke'

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.