salve avrei il seguente problema:
Non riesco a deserializzare gli oggetti passati in rete!
Il codice della deserializzazione è il seguente:
mi da errore sulla seguente riga di codice:codice:Codice PHP:/* il metodo receiveMessage(DatagramPacket) deserializza la sequanza di byte ricevuti dalla rete * ottenendo così l'oggetto message. In base al tipo di msg ricevuto richiama poi la classe adatta * ad elaborare tale messaggio */ public void receiveMessage(DatagramPacket dpacket) throws IOException, ClassNotFoundException { System.out.println("Messaggio ricevuto" + dpacket.getAddress() ); System.out.println("Porta: " + dpacket.getPort()); System.out.println("Lunghezza messaggio: " + dpacket.getLength()); // deserializzazione oggetti ricevuti dalla rete ByteArrayInputStream biStream = new ByteArrayInputStream(dpacket.getData()); ObjectInputStream ois=new ObjectInputStream(biStream); tera.NetworkMsg arriveMsg=new tera.NetworkMsg(); arriveMsg=(tera.NetworkMsg)ois.readObject(); System.out.println(arriveMsg.getClass()); // verifica il tipo di messaggio arrivato if (arriveMsg instanceof cyclon.ResponseViewExchangeMsg) { System.out.println("ricevuto messaggio di risposta di shuffle"); cyclon.ResponseViewExchangeMsg msg1=(cyclon.ResponseViewExchangeMsg)ois.readObject(); } if (arriveMsg instanceof cyclon.ViewExchangeMsg) { System.out.println("ricevuto messaggio di shuffle"); cyclon.ViewExchangeMsg msg=(cyclon.ViewExchangeMsg)ois.readObject(); cyclonMan.shuffleHandler(msg); } else if (arriveMsg instanceof tera.NetworkMsg) { System.out.println("Network message"); } biStream.reset(); ois.close(); }
cyclon.ViewExchangeMsg msg=(cyclon.ViewExchangeMsg)ois.readObject();
In teoria io leggo l'oggetto e verifico di che oggetto si tratta (tutti messaggi ereditari dal tipo messaggio) e poi vorrei ricostruire l'oggetto esatto ma a quanto pare in quest'ultimo messaggio mi dà errore.
L'errore in questione è: java.io.StreamCorruptedException
grazie

Rispondi quotando