Cliente - servidor nao troca mensagem via socket

Amigos do forum o programa esta exibindo a conexão com o cliente certinho …só tem um problema não estou cosneguindo enviar nenhuma mensagem entre o cliente - servidor , sendo que eles estão conectados . O programa não da erro nenhum !!!

package pkg.cliente;

import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.Socket;
import java.net.UnknownHostException;

public class Cliente {

	private Socket cliente  ;
	
	private ObjectOutputStream enviar ;
	
	private ObjectInputStream receber ;

	private String mensagem ;

	public void iniciarConexao( String ipServidor , int porta ) throws IOException, ClassNotFoundException {
        
		conectarServidor(ipServidor, porta);
	   	getStream();
	   	receberMensagem();
 		
	}

	
	public void conectarServidor( String ipServidor , int porta ) throws UnknownHostException, IOException {
	    cliente = new Socket(ipServidor,porta);
	}
	
	
    
	
	public void getStream() throws IOException, ClassNotFoundException {
		
		enviar = new ObjectOutputStream(cliente.getOutputStream());
		
		enviar.flush();
		
		receber = new ObjectInputStream(cliente.getInputStream());
		
	}
	
	public void enviarMensagem(String mensagem) throws IOException {
		
		System.out.println("Enviado Mensagem...");
		enviar.writeObject( " <<Cliente>> " + mensagem + "\n" );
	   	enviar.flush();
		
    }

    
	public void receberMensagem() throws IOException, ClassNotFoundException {
		
		do {
			
			mensagem = (String) receber.readObject();
			
			System.out.println(mensagem);
			
		} while (!mensagem.equals("fim"));


	}
   		
	public static void main(String[] args) {

		try {
		
			Cliente cliente = new Cliente();	
			
			cliente.iniciarConexao("127.0.0.1", 12345);
	
      	                cliente.enviarMensagem("ola");
	
		} catch (IOException e) {
			// TODO Auto-generated catch block
			System.out.println(e.getMessage());
		} catch (ClassNotFoundException e) {
			System.out.println(e.getMessage());
		}		
	}
}
package pkg.servidor;

import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class Servidor {

	private ServerSocket server = null ;
	
	private Socket conexao = null ;
	
	private ObjectOutputStream enviar  ;
	
	private ObjectInputStream receber  ;
	
	private String mensagem = "";
	
	
	
	public void iniciarServidor() throws IOException, ClassNotFoundException {
	
		server = new ServerSocket(12345);	
		
  	    while(true) {
		    
		     aguardarConexao();
		      
		  	 getStream();
	
		     receberMensagem();
	
	    }	
		
	
	}
	
	
	public void aguardarConexao() throws IOException {
		
		System.out.println(" Aguardando conexão...");
		
	    conexao = server.accept(); 	
		
	    System.out.println(" Conexão estabelecida com o IP : " + conexao.getInetAddress().getHostAddress() + "\n" + " Nome do computador remoto : " + conexao.getInetAddress().getHostName() + "\n");
	    
	}
	
	
	public void getStream() throws IOException, ClassNotFoundException {
		
		enviar = new ObjectOutputStream(conexao.getOutputStream());
		
		enviar.flush();
		
		receber = new ObjectInputStream(conexao.getInputStream());
		
	}

	public void enviarMensagem(String mensagem) throws IOException {
		
	   	enviar.writeObject( " <<Servidor>> " + mensagem + "\n" );
	   	enviar.flush();
		
	}


	public void receberMensagem() throws IOException, ClassNotFoundException{
		
		do {
			
		    mensagem = (String) receber.readObject();
			
			System.out.println(mensagem);
			
		} while (!mensagem.equals("fim"));
		
	}
	
	public static void main(String[] args) {
		
		try {
			
			Servidor servidor = new Servidor();
			
			servidor.iniciarServidor();
			
			servidor.enviarMensagem("aaaa");
	
		} catch (IOException e) {
			System.out.println(e.getMessage());
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			System.out.println(e.getMessage());
			System.out.println(e.getCause());
			e.printStackTrace();
		}
	
	}
	
}

Agadeço a quem ajudar