Buona sera a tutti, ho un problema java che mi sta tormentando da questa mattina e ho davvero bisogno di aiuto per risolverlo.

Il problema è rappresentato dall'invio di una classe mediante objectInputStream e objectOutputStream.

Questa è la classe cliente
codice:
public class Cliente {


	static int port = 6000;
	static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
	
	public static void main(String[] args) {


		Socket socket = null;
		String str = null;
		Pizza pizza = null;
		
		PrintStream ps;
		ObjectInputStream ois;
		
		try {
			socket = new Socket("localhost", port); //creo la socket
			
			ps = new PrintStream(socket.getOutputStream());
			ois = new ObjectInputStream(socket.getInputStream());
			
			System.out.println("Benvenuto in pizzeria");
			
			do {
				str = pizza(); //chiedo l'ordine
				ps.print(str+"\r\n"); //invio sulla rete
				ps.flush();
				
				try {
					pizza = (Pizza)ois.readObject();
					ois.close();
					
					System.out.println("Ho ricevuto una bella "+pizza.getType());
				} catch (ClassNotFoundException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				
			}while(!str.equals("exit"));
			
			System.out.println("Arrivederci");
			socket.close();
				
		} catch (UnknownHostException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}


	public static String pizza() {
		String str = null;
		
		System.out.println("Quante pizze vuoi?"); //stampo a video la richiesta
		try {
			str = br.readLine(); //leggo l'ordine
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		return str;
	}
}
Alla riga "pizza = (Pizza)ois.readObject();" il client riceve dal server un oggetto di tipo stringa.

L'oggetto di tipo stringa è così definito:
codice:
public class Pizza implements Serializable {


	private static final long serialVersionUID = 1L;
	String nome;
	
	public Pizza() {
		 nome = "Margherita";
	}
	
	public String getType() {
		return nome;
	}
}

E questo è il frammento della classe pizzaiolo responsabile dell'invio:
codice:
		try {
			oos.writeObject(p);
			oos.flush();
			oos.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
Il problema è il seguente: il client arriva alla riga incriminata prima che il server abbia scritto qualcosa su canale, tuttavia immediatamente solleva questa eccezzione:

java.io.EOFException
at java.io.ObjectInputStream$BlockDataInputStream.pee kByte(Unknown Source)
at java.io.ObjectInputStream.readObject0(Unknown Source)
at java.io.ObjectInputStream.readObject(Unknown Source)
at Cliente.main(Cliente.java:39)

Sapete dirmi da cosa può essere causata?