GARANTIR DESCONTO

Fórum Aplicação Java Trava ( utilizando sokets) #592197

05/04/2018

0

Olá pessoal...

Necessito muito da ajuda de vocês, Contarei a história desde o princípio !

Estou desenvolvendo uma aplicação java utilizando ServerSocket e socket para comunicar com o Arduino, estou criando uma comunicação entre eles onde o Java é o Servidor e o arduino um cliente. A aplicação java deve esperar o Arduino enviar uma mensagem(Atualização de status),para o servidor para que o mesmo possa atualizar essa mensagem em um JFrame que aparece para o usuário.
O Arduino está operando normalmente, porém a aplicação java acaba "travando" depois de algumas horas estando aberta e consequentemente o arduino perde a comunicação com o Java.
public static void main(String args[]) throws IOException, SQLException {
        /* Set the Nimbus look and feel */
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
         * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
         */
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>

        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                try {
                    frame =  new NewJFrame();
                    frame.setVisible(true);

                } catch (IOException ex) {
                    Logger.getLogger(NewJFrame.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        });
        
                try {

                    while (true) {
                        serverSocket = new ServerSocket(5555);
                        System.out.println("Aguardando Conexão...");
                        socket = serverSocket.accept();
                        System.out.println("Cliente Conectado !");

                        input = new BufferedReader(new InputStreamReader(socket.getInputStream()));

                        msg = input.readLine();
                        jLabel1.setText("Status: " + msg);

                        System.out.println("Mensagem Recebida = " + msg);

                        input.close();
                        socket.close();
                        serverSocket.close();
                        System.out.println("Cliente Finalizado");
                       // contador = contador+1;

                        if (!msg.equals("")) {
                            verificaMensagem(msg);
                        }
                       // if(contador>=500){
                       //    contador = 0;
                       //     frame.dispose();//encerra a JFrame que esta Aparecendo na tela
                       //     frame.setVisible(true);//Cria um novo JFrame
                            
                       // }

                    }

                } catch (IOException e) {
                    System.out.println("Erro ao Receber Mensagem !");
                } catch (SQLException ex) {
                    Logger.getLogger(NewJFrame.class.getName()).log(Level.SEVERE, null, ex);
                } finally {
                    try {
                        serverSocket.close();
                    } catch (IOException ex) {
                        Logger.getLogger(NewJFrame.class.getName()).log(Level.SEVERE, null, ex);
                    }
                }
       
    }


Bom, eu até tentei criar uma rotina para restartar o jFrame, porem não obtive sucesso, Alias, o codigo acima descrito é a função main do meu Jframe que se chama NewJFrame.

Qualquer Informação é muito bem Vinda !!! =D
Jorge Maceulevicius

Jorge Maceulevicius

Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar