Como identificar um objeto após receber ele por um soket?

Bom é um seguinte eu estou desenvolvendo uma aplicação cliente/servidor e estou trabalhando com socket e o meu problema é o seguinte eu envio uma mensagem em forma de um objeto e depois quando recebo no servidor eu uso o obj.getClass() para identificar que tipo de objeto é esse. Mas não ta funcionado alguem tem uma solução ou uma dica para o meu problema ?

aqui esta o metodo que recebe e deveria identificar o objeto que foi recebido

[code]
public void run() {
try {
Socket socket = this.conexao;

        ObjectInputStream entrada = new ObjectInputStream(socket.getInputStream());
        
        // Uma vez que se tem um cliente conectado e conhecido,
        // coloca-se fluxo de saída para esse cliente no vetor de
        // clientes conectados.
        ObjectOutputStream saida = new ObjectOutputStream(socket.getOutputStream());
        clientes.add(saida);
        
        Object mensagem;
        while (true) {
            
            // pega o que o cliente enviou
            mensagem = entrada.readObject();
            
            if (mensagem.getClass() == new Texto(null,null,null).getClass()) {

                //a mensagem recebida é uma mensagem de texto
                System.out.println("Uma mensagem foi recebida/enviada");
                
                Texto msgTexto = (Texto) mensagem;
                
                String remetente = msgTexto.getDestinatario();
                String destinatario =  msgTexto.getRementente();
                String texto = msgTexto.getTexto();
                
                Texto resposta = new Texto(remetente,destinatario, texto);
                enviaparaTodos(resposta);

            } else if (mensagem.getClass() == new Login(null,null,null,null).getClass()) {

                //a mensagem recebida é uma mensagem de login
                System.out.println("Foi recebido uma solicitação de login");
                
                Login login = (Login) mensagem;
                
                String remetente = login.getDestinatario();
                String destinatario =  login.getRementente();
                String nome = servidorBd.getNomeUsuario(login.getLogin());
                boolean reposta = servidorBd.autenticaUsuario(login.getLogin(), login.getSenha());
                
                Login resposta = new Login(remetente,destinatario, nome, reposta);
                enviaparaTodos(resposta);
                
            } else if (mensagem.getClass() == new ListaDeUsuarios(null,null,null).getClass()) {

                //a mensagem recebida é uma mensagem de ListaDeUsuarios
                System.out.println("Foi recebido uma solicitação atualização de lista de usuarios");
                
                ListaDeUsuarios listaDeUsuarios = (ListaDeUsuarios) mensagem;
                
                String remetente = listaDeUsuarios.getDestinatario();
                String destinatario = listaDeUsuarios.getRementente();
                HashMap<String,String> lista = servidorBd.getListaDeUsuarios();
                
                ListaDeUsuarios resposta = new ListaDeUsuarios(remetente,destinatario,lista);
                enviaparaTodos(resposta);

            } else if (mensagem.getClass() == new Cadastro(null,null,null,null,null).getClass()) {

                //a mensagem recebida é uma mensagem de Cadastro
                System.out.println("Foi recebido uma solicitação de cadastro");
                Cadastro cadastro = (Cadastro) mensagem;
                servidorBd.addUsuario(cadastro.getLogin(),cadastro.getNome(), cadastro.getSenha());

            } else {
                System.out.println("Foi recebido uma mensagem desconhecida !");
            }
        }
    } catch (IOException ex) {
        
        // caso ocorra alguma exceção de E/S, mostre qual foi.
        System.out.println("Não foi possivel encerrar a conexão com o cliente");
    } catch (ClassNotFoundException ex) {
        System.out.println("Opa! tivemos um problema para identificar um tipo de mensagem");
    } finally {
        try {
            this.finalize();
        } catch (Throwable ex) {
            System.out.println("Não foi possivel encerrar a thread de recepção de mensagens");
        }
    } 
}[/code]

Use o instanceof

if(mensagem instanceof Texto)

Ou então envie uma String e comparea com equals mesmo.

O instanceof não funcionou :?

vou tentar com String agora

valeu pela dica =D

instanceof n rolou ??? como vc fez ??

se vc quizer saber o tipo e objeto, instanceof eh o que precisa…

e depois de ver são objetos do mesmo tipo, ai sim usar o equals…

if (objSocket instanceof MeuObjeto){ return ((MeuObjeto)objSocket ).equals(meuObjeto); }

Obs.: Preste atenção nas letras MAIUSCULAS e minusculas.

[quote=PadrE]instanceof n rolou ??? como vc fez ??

se vc quizer saber o tipo e objeto, instanceof eh o que precisa…

e depois de ver são objetos do mesmo tipo, ai sim usar o equals…

if (objSocket instanceof MeuObjeto){ return ((MeuObjeto)objSocket ).equals(meuObjeto); }

Obs.: Preste atenção nas letras MAIUSCULAS e minusculas.[/quote]

Então eu usei o stanceof assim

só mudei aonde era

 if (mensagem.getClass() == new Texto(null,null,null).getClass()) 

para

if(mensagem instanceof Texto)  

Então eu descobri aqui http://www.guj.com.br/posts/list/109468.java o que estava errado =D

agora é o fim do tratamento de string 8)