Boa noite pessoal,
Estou enfrentando um probleminha e gostaria da ajuda de vocês. Estou criando um chat usando sockets. Primeiramente, usando Strings, consegui com sucesso enviar e distribuir para todos os clientes conectados.
Porém, quando fui trabalhar com Objetos, tive problema.
Na minha classe de enviar o Objeto, aparentemente, está tudo ok, porém, na hora de ler o objeto no servidor, ele não está lendo. Já vi vários e vários tópicos relacionados a isso, e todos estão praticamente iguais.
Vou postar um esboços das classes:
Classe de enviar mensagens para o servidor:
public void writeMessage() throws IOException{
obj = new ObjectOutputStream(output);
while (executa){
String msg = JOptionPane.showInputDialog(null, "Digite sua mensagem: ", "Atenção", JOptionPane.QUESTION_MESSAGE);
user.setMsg(msg);
user.setHora(new SimpleDateFormat("HH:mm:ss").format(new Date()));
obj.writeObject(user);
obj.flush();
}
obj.close();
saida.close();
}
O objeto ObjectOutPutStream recebe uma variavel output, que nada mais é que o getOutPutStream do cliente.
Agora, no servidor, onde recebo e distribuo as mensagens, tenho o seguinte código (Implementa Runnable):
public void run() {
obj = new ObjectInputStream(user.getCliente().getInputStream());
while (true) {
User user = (User) obj.readObject();
System.out.println(user.getHora());
System.out.println(user.getHost());
System.out.println(user.getMsg());
}
}
E nada de mostrar na console. Não dá erro, mas também não mostra nada.
Já tentei dessa maneira também:
public void run() {
obj = new ObjectInputStream(user.getCliente().getInputStream());
Scanner s = new Scanner(obj);
while (s.hasNextLine()) {
User user = (User) obj.readObject();
System.out.println(user.getHora());
System.out.println(user.getHost());
System.out.println(user.getMsg());
}
}
A classe User no cliente e no servidor são idênticas, segue:
public class User implements Serializable{
private transient Socket cliente;
private String ip;
private String nomeComputer;
private String nomeCliente;
private String hora;
private String msg;
}
Alguém ai para dar um auxilio?