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]