JFrame não abre devido ao ObjectInputStream?

1 resposta
long

Estou tentando fazer uma comunicação cliente/servidor por Socket. Criei um JFrame que envia para o servidor uma determinada palavra e quando o servidor recebesse esta msg ele retornaria para o cliente avisando que tinha recebido.
Eu consigo enviar do cliente para o servidor uma msg, o problema é quando eu tento enviar do servidor para o cliente. Quando vou rodar o JFrame, ela simplesmente não abre.. verifiquei então que quando eu comento a linha que eu instancio o input (ObjectInputStream) na classe cliente, a frame roda di boa

Cliente:

public class Cliente {  
          
        private ObjectInputStream input;  
        private ObjectOutputStream output;  
          
        public Cliente(){  
            try {  
                Socket socket = new Socket("localhost", 1234);  
                input = new ObjectInputStream(socket.getInputStream()); // quando eu comento aqui  
                output = new ObjectOutputStream(socket.getOutputStream());  
            } catch (UnknownHostException ex) {  
                Logger.getLogger(Cliente.class.getName()).log(Level.SEVERE, null, ex);  
            } catch (IOException ex) {  
                Logger.getLogger(Cliente.class.getName()).log(Level.SEVERE, null, ex);  
            }  
        }  
          
        public ObjectInputStream getInput(){  
            return input;  
        }  
          
        public ObjectOutputStream getOutput(){  
            return output;  
        }  
    }

JFrame:

private Cliente cl = new Cliente();   
    ..  
      
        private void jButtonActionPerformed(java.awt.event.ActionEvent evt) {  
            try {  
                cl.getOutput().writeObject("Teste");  
            } catch (IOException ex) {  
                Logger.getLogger(Sist.class.getName()).log(Level.SEVERE, null, ex);  
            }  
        }  
    ..  
      
    public void run() {  
            Object obj;  
            try {  
                while((obj = cl.getInput().readObject()) != null){  
                            System.out.println("recebeeeeeeeu");  
            }  
            } catch (IOException ex) {  
                Logger.getLogger(Sist.class.getName()).log(Level.SEVERE, null, ex);  
            } catch (ClassNotFoundException ex) {  
                Logger.getLogger(Sist.class.getName()).log(Level.SEVERE, null, ex);  
            }  
        }

Servidor:

public class Servidor implements Runnable{  
        public ObjectInputStream input;  
        public ObjectOutputStream output;  
          
        public Servidor(Socket socket){  
            try {  
                input = new ObjectInputStream(socket.getInputStream());  
                output = new ObjectOutputStream(socket.getOutputStream());  
            } catch (IOException ex) {  
                Logger.getLogger(Servidor.class.getName()).log(Level.SEVERE, null, ex);  
            }          
        }  
      
        @Override  
        public void run() {  
            Object obj;  
            String a = "erick";  
            try {  
                while((obj = input.readObject()) != null){   
                    if(obj.equals("Teste")){  
                    System.out.println("Recebido");  
                    File file = new File("E:\Teste Socket\1.jpg");  
                        //System.out.println(file);  
                    output.writeObject(file);  
                    }  
                }  
            } catch (IOException ex) {  
                Logger.getLogger(Servidor.class.getName()).log(Level.SEVERE, null, ex);  
            } catch (ClassNotFoundException ex) {  
                Logger.getLogger(Servidor.class.getName()).log(Level.SEVERE, null, ex);  
            }  
        }  
          
          
    }

Tambem verifiquei que quando eu paro de rodar o servidor, a frame abre mas gera o erro devido ao serversocket ta fechado. Ele trava em algum lugar agora não sei onde =\

1 Resposta

long

ngm teria ideia?

Criado 29 de março de 2013
Ultima resposta 31 de mar. de 2013
Respostas 1
Participantes 1