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):
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);
                    
            }
    }


}
Per ulteriore chiarezza posto anche il lato client che serializza l'oggetto da inviare:

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");
       	}
}
Grazie a tutti!!!!!!!