Problemas com Socket Null

Estou com problemas no socket, esta dando um erro “null” quando quando dou readObject no ObjectInputStream

Servidor:

    public void run() {
        try {
        InetAddress ipReceber = skt.getInetAddress();
        System.out.println("Tratando Socket!");
        
        InputStream is = skt.getInputStream();
        
        ObjectInputStream msgRecebida = new ObjectInputStream(is);
        
        if(msgRecebida.readObject() instanceof Mensagens) {
            System.out.println("Tratando... " + ipReceber.toString());
            Mensagens msg = (Mensagens)msgRecebida.readObject();
            System.out.println("Tratando...");
            System.out.println("Uma mensagem foi enviada de: " + ipReceber.toString() + "para: ");
            System.out.println("Tratando...");
        }

Cliente :

    public EnviaMensagem() {
        try {
            Socket cliente = new Socket("192.168.0.100", 4000);
            Mensagens msg = new Mensagens("a", "1");
            ObjectOutputStream output = new ObjectOutputStream(cliente.getOutputStream());
            output.writeObject(msg);
            output.flush();
            
            output.close();
            
            System.out.println("Socket enviado!");
        } catch(Exception e) {
            System.out.println(e.getMessage());
        }
    }

ola

quando vc faz readObject() provavelmente vc leu o objeto e o retornou.

vc não armazenou-o. vc descartou quando comparou via instanceof

e ai vc tentou ler de novo

faz assim

Object o  = msgRecebida.readObject()
if ( o  instanceof Mensagem ) {
  Mensagem m = (mensagem) o;
   ...

if(msgRecebida.readObject() instanceof Mensagens) { // nessa linha você leu um objeto e o descartou
    System.out.println("Tratando... " + ipReceber.toString());
    Mensagens msg = (Mensagens)msgRecebida.readObject(); // nessa linha você está lendo o próximo objeto

É só seguir a instrução do @peczenyj e armazenar o objeto em uma variável. :slight_smile:

1 curtida