Salve a tutti
avrei il seguente problema sulla deserializzazione di un oggetto inviato sulla rete tramite UDP.
la riga di codice che dovrebbe ricostruire l'oggetto "prova=(persona)ois.readObject();" mi dà un eccezione del tipo ClassCastException.
posto qui di seguito il codice del lato server (quello che mi dà l'eccezione):
Per ulteriore chiarezza posto anche il lato client che serializza l'oggetto da inviare:codice:import java.io.*; import java.net.*; public class UDPreceiver { public class persona implements Serializable { private static final long serialVersionID=1L; private String nome; private String cognome; private int eta; public persona(String nome, String cognome, int Persona) { this.nome=nome; this.cognome=cognome; eta=Persona; } String getNome() { return nome; } String getCognome() { return cognome; } int getEta() { return eta; } } public static void main(String args[]) throws ClassNotFoundException, IOException { if(args.length!=1) throw new IOException("Uso: UDPReceiver <port>"); byte buffer[] = new byte[65536]; DatagramSocket dsocket = new DatagramSocket(Integer.parseInt(args[0])); DatagramPacket dpacket; while(true) { System.out.println("In attesa di messaggi....."); dpacket = new DatagramPacket(buffer, buffer.length); dsocket.receive(dpacket); persona prova=null; System.out.println("Ricevuto messaggio"); System.out.println("Mittente: " + dpacket.getAddress()); System.out.println("Porta: " + dpacket.getPort()); System.out.println("Lunghezza messaggio: " + dpacket.getLength()); ByteArrayInputStream biStream = new ByteArrayInputStream(dpacket.getData()); ObjectInputStream ois=new ObjectInputStream(biStream); prova=(persona)ois.readObject(); System.out.println(prova.nome); } } }
Grazie a tutti!!!!!!!codice:import java.io.*; import java.net.*; import java.util.*; public class UDPsender { public static class persona implements Serializable { private static final long serialVersionID=1L; private String nome; private String cognome; private int eta; public persona(String nome, String cognome, int Persona) { this.nome=nome; this.cognome=cognome; eta=Persona; } String getNome() { return nome; } String getCognome() { return cognome; } int getEta() { return eta; } } static protected DatagramPacket buildPacket(String host, int port, persona studente) throws IOException { InetAddress address=InetAddress.getByName(host); ByteArrayOutputStream bout=new ByteArrayOutputStream(); byte[] data=new byte[256]; DatagramPacket dp=new DatagramPacket(data,data.length,address,port); ObjectOutputStream dout=new ObjectOutputStream(bout); dout.writeObject(studente); dout.flush(); data=bout.toByteArray(); dp.setData(data); dp.setLength(data.length); bout.reset(); return dp; } public static void main(String [] args) throws IOException { if(args.length<5) throw new IOException("Uso: UDPSender <host> <port> <nome> <cognome> <età>"); DatagramSocket dsocket = new DatagramSocket(); DatagramPacket dpacket; persona studente=new persona(args[2],args[3],Integer.parseInt(args[4])); dpacket = buildPacket(args[0], Integer.parseInt(args[1]),studente); dsocket.send(dpacket); System.out.println("Messaggio spedito"); } }

Rispondi quotando

