How to listen to a Socket connection on Android

Asked

Viewed 266 times

0

I have a socket tcp java server on the pc and a socket tcp client on android, I receive data from the server. However how do I create a server that is always listening to a port on android, ie create a server socket on android. Can I for example leave a thread just sending data to a port on the pc, and another thread just receiving data from the pc and updating the ui? Does anyone have examples or links to help.

// sockert server that takes commands from android

package Tanio;

java import.io.; java net import..;

import javax.swing.Swingworker;

class socketServer Runnable Implements{
String clientSentence = ""; String capitalizedSentence;

    int porta = 9837;



    public void run(){
    /*atribuicao do numero da porta ao socket*/
                    ServerSocket welcomeSocket = null;
                  try {
                      welcomeSocket = new ServerSocket(porta);
                  } catch (IOException e1) {
                      // TODO Auto-generated catch block
                      e1.printStackTrace();
                  }
                    System.out.println("Esperando conexoes na porta " + porta);

                    {
                    while (true) {
   Socket connectionSocket = null;        try {           connectionSocket = welcomeSocket.accept();      } catch (IOException e1) {          // TODO

Auto-generated catch block E1.printStackTrace(); } System.out.println("Connection accepts....");

    BufferedReader inFromClient = null;       try {           inFromClient = new BufferedReader(new InputStreamReader(

connectionSocket.getInputStream() ); } catch (Ioexception E1) { // TODO Auto-generated catch block E1.printStackTrace(); } Try@Dataoutputstream outToClient = new Dataoutputstream( connectionSocket.getOutputStream() ); } catch (Ioexception E1) ' // TODO Auto-generated catch block E1.printStackTrace(); }

                              try {
                                  DataOutputStream outToClient = new DataOutputStream( connectionSocket.getOutputStream() );

                                   clientSentence = inFromClient.readLine();

                                   System.out.println("Frase recebida do Cliente: " + clientSentence);

                                   //connectionSocket.close();




                                   int valorconvertido = Integer.parseInt(clientSentence);
                                   System.out.println(valorconvertido);

                                   switch (valorconvertido){ 

                                   case 2:

                                       modoAutonomo executarmodoAutonomo = new modoAutonomo();
                                       executarmodoAutonomo.execute();

                                      outToClient.writeUTF("Ligando o Carro!");;
                                      //outToClient.writeByte(2);
                                      outToClient.flush();
                                      //outToClient.close();

                                       break;      

                                   case 3:

                                      desligar executardesligar = new desligar();
                                      executardesligar.execute();

                                       break;


                                  }

                                   connectionSocket.close();


                                      } catch (Exception e) {
                                              System.out.println("PERDA DA CONEXAO");
                                      }
                                      /*fecha a conexão aberta*/
                                      try {
                                          connectionSocket.close();
                                      } catch (IOException e) {
                                          // TODO Auto-generated catch block
                                          e.printStackTrace();
                                      }
                                      System.out.println("Conexao fechada");
                 }


               } }    }

Method to start the car

package Tanio;

import javax.swing.Imageicon; import javax.swing.Joptionpane; import javax.swing.Swingworker;

import java.text.Simpledateformat; import java.util.Date; import java.util.Concurrent.Executionexception;

import Tanio.call;

public class modoAutonomo extends Swingworker { public serialcomleitura Arduino = new Serialcomleitura("COM7",9600, 0); public char valorlido; Static int function;

  protected Object doInBackground(){



      arduino.enviarDados(2);
      arduino.receberDados();

      delay.delay(3000); 
      char valorlido = arduino.getPeso().charAt(0);  


      if (valorlido == 'b' | valorlido == 'c') {
      arduino.FecharCom();

          chamarTelaPrincipal.Info.setText("Chave Ligou!");



          //chamarTelaPrincipal.jBLigar.setIcon(new ImageIcon("C:\\Users\\alicia.cc\\Desktop\\start.jpg"));   
          //chamarTelaPrincipal.jBLigar.setEnabled( false );
          //chamarTelaPrincipal.jBLigar.setVisible(false);

          //chamarTelaPrincipal.jBDesligar.setEnabled( true );
          //chamarTelaPrincipal.jBDesligar.setVisible(true);



           //arduino.FecharCom();
              delay.delay(2000);
              chamarTelaPrincipal.Info.setText("Acionando Partida!");

          ////comando para ligar o carro

          arduino.enviarDados(4);
          arduino.receberDados();
          delay.delay(2000);
          char valorlido1 = arduino.getPeso().charAt(0);   //                 char valorlido1 = arduino.getPeso().charAt(0);  
            if (valorlido1 == 'y' ){







              chamarTelaPrincipal.Info.setText("Carro Ligou!");



              chamarTelaPrincipal.btnDesligar.setEnabled(true);//botao desligar

is activated

                chamarTelaPrincipal.btnLigarMotor.setEnabled(false);//botao ligar fica

deactivated

                chamarTelaPrincipal.jBDesligar.setVisible(true); 
                chamarTelaPrincipal.jBDesligar.setEnabled(true); //botao desligar modo autonomo habilita


                chamarTelaPrincipal.jBLigar.setEnabled(false); // botao ligar modo autonomo desabilita
                chamarTelaPrincipal.jBLigar.setVisible(false);

                chamarTelaPrincipal.btnLigarResto.setEnabled(false); //botao ligar

rest disables chamarTelaPrincipal.btnLigarResto.setVisible(false);

                chamarTelaPrincipal.btnDesligarResto.setEnabled(false);// botao

turn off rest chamarTelaPrincipal.btnDesligarResto.setVisible(false);

             arduino.FecharCom();


              delay.delay(2000);

              arduino.enviarDados(7);
              arduino.receberDados();
              delay.delay(2000); 

              char valorlido9 = arduino.getPeso().charAt(0);  
              if (valorlido9 == 'r') {
                  // som ligou
                  arduino.FecharCom();
                  //chamarTelaPrincipal.btnsomon.setIcon(new ImageIcon("C:\\Users\\alicia.cc\\Desktop\\somdesligado.jpg"));   


                  chamarTelaPrincipal.btnsomon.setEnabled(false); 
                  chamarTelaPrincipal.btnsomon.setVisible(false); 



                  chamarTelaPrincipal.btnsomoff.setEnabled(true); 
                  chamarTelaPrincipal.btnsomoff.setVisible(true); 

                      chamarTelaPrincipal.Info.setText("Som Ligado!");    
              }
              else if(valorlido9 == 't'){
                  //som ja estava ligado

                  arduino.FecharCom();

                  //chamarTelaPrincipal.btnsomon.setIcon(new ImageIcon("C:\\Users\\alicia.cc\\Desktop\\somdesligado.jpg"));   

                  chamarTelaPrincipal.btnsomon.setEnabled(false); 
                  chamarTelaPrincipal.btnsomon.setVisible(false); 



                  chamarTelaPrincipal.btnsomoff.setEnabled(true); 
                  chamarTelaPrincipal.btnsomoff.setVisible(true); 


                      chamarTelaPrincipal.Info.setText("Som Ja esta Ligado!");


              }
              else{
                  System.out.println(valorlido9);

                  arduino.FecharCom();
                  //houve algum problema na conexao e o som nao ligou

                  chamarTelaPrincipal.Info.setText("Problema na Conexao, Som nao ligou!");
                      delay.delay(1000);
                  chamarTelaPrincipal.Info.setText("Verifique o pino VoltSom!");

              }















          delay.delay(2000);

          arduino.enviarDados(5);
          arduino.receberDados();
          delay.delay(2000); 

          char valorlido2 = arduino.getPeso().charAt(0);  
          if (valorlido2 == 'j') {
              arduino.FecharCom();

              chamarTelaPrincipal.Info.setText("Potência Ligada");

              //chamarTelaPrincipal.btnpotencia.setIcon(new ImageIcon("C:\\Users\\alicia.cc\\Desktop\\onoff.jpg"));   

              chamarTelaPrincipal.btnpotencia.setEnabled(false);
              chamarTelaPrincipal.btnpotencia.setVisible(false);

              chamarTelaPrincipal.btnpotenciaoff.setEnabled(true);
              chamarTelaPrincipal.btnpotenciaoff.setVisible(true);




              //chamarTelaPrincipal.jBLigar.setEnabled( false );
              //chamarTelaPrincipal.jBDesligar.setEnabled( true );
          }
          else if (valorlido2 == 's'){
              arduino.FecharCom();

              chamarTelaPrincipal.Info.setText("Potencia Ja Esta Ligada!");

              chamarTelaPrincipal.btnpotencia.setEnabled(false);
              chamarTelaPrincipal.btnpotencia.setVisible(false);

              chamarTelaPrincipal.btnpotenciaoff.setEnabled(true);
              chamarTelaPrincipal.btnpotenciaoff.setVisible(true);



          }
          else {
              arduino.FecharCom();

              chamarTelaPrincipal.Info.setText("Houve algum problema na Conexao!");
          }


          delay.delay(2000);

          Date hora = new Date();
          Date minutos = new Date();
          SimpleDateFormat formatarhora = new SimpleDateFormat("H");
          SimpleDateFormat formatarminutos = new SimpleDateFormat("mm");
          String horaformatada = formatarhora.format(hora);
          String minutosformatada = formatarminutos.format(minutos);
          //System.out.printf(horaformatada);
          //System.out.printf(":%s", minutosformatada);
          int horaint = Integer.parseInt(horaformatada);
          int minutosint = Integer.parseInt(minutosformatada);

          System.out.print(horaint);
          System.out.println(minutosint);

          if (horaint > 2 ){

          arduino.enviarDados(11);
          arduino.receberDados();
          delay.delay(2000); 

          char valorlido4 = arduino.getPeso().charAt(0);  
          if (valorlido4 == 'j') {
              System.out.println(valorlido);
              arduino.FecharCom();

              chamarTelaPrincipal.Info.setText("Farois de Milha Ligados");


              //chamarTelaPrincipal.btnpotencia.setIcon(new ImageIcon("C:\\Users\\alicia.cc\\Desktop\\onoff.jpg"));   

              chamarTelaPrincipal.btnligarfarolmilha.setEnabled(false);
              chamarTelaPrincipal.btnligarfarolmilha.setVisible(false);

              chamarTelaPrincipal.btndesligarfarolmilha.setEnabled(true);
              chamarTelaPrincipal.btndesligarfarolmilha.setVisible(true);


              //chamarTelaPrincipal.jBLigar.setEnabled( false );
              //chamarTelaPrincipal.jBDesligar.setEnabled( true );
          }
          else if(valorlido4 == 's'){
              arduino.FecharCom();


              chamarTelaPrincipal.Info.setText("Farois de Milha Ja Ligados");

              //chamarTelaPrincipal.btnpotencia.setIcon(new ImageIcon("C:\\Users\\alicia.cc\\Desktop\\onoff.jpg"));   

              chamarTelaPrincipal.btnligarfarolmilha.setEnabled(false);
              chamarTelaPrincipal.btnligarfarolmilha.setVisible(false);

              chamarTelaPrincipal.btndesligarfarolmilha.setEnabled(true);
              chamarTelaPrincipal.btndesligarfarolmilha.setVisible(true);


              //chamarTelaPrincipal.btnpotencia.setIcon(new ImageIcon("C:\\Users\\alicia.cc\\Desktop\\onoff.jpg"));
              //chamarTelaPrincipal.btnpotencia.setEnabled(false);
          }
          else {
              arduino.FecharCom();
              chamarTelaPrincipal.Info.setText("Houve algum problema na Conexao!");

          }
          }




            }
             else if (valorlido1 == 'i'){
               arduino.FecharCom();
                  chamarTelaPrincipal.Info.setText("Não e Possivel dar Partida!");
                  delay.delay(1000);
                  chamarTelaPrincipal.Info.setText("Chave Desligada!");



  chamarTelaPrincipal.btnDesligar.setEnabled(false);//botao desligar fica ativado

                chamarTelaPrincipal.btnLigarMotor.setEnabled(true);//botao ligar fica

deactivated

                chamarTelaPrincipal.btnDesligar.setEnabled(false);//botao ligar fica

deactivated

                chamarTelaPrincipal.jBDesligar.setVisible(false); 
                chamarTelaPrincipal.jBDesligar.setEnabled(false); //botao desligar modo autonomo habilita


                chamarTelaPrincipal.jBLigar.setEnabled(true); // botao ligar modo autonomo desabilita
                chamarTelaPrincipal.jBLigar.setVisible(true);

                chamarTelaPrincipal.btnLigarResto.setEnabled(false); //botao ligar

rest disables chamarTelaPrincipal.btnLigarResto.setVisible(false);

                chamarTelaPrincipal.btnDesligarResto.setEnabled(false);// botao

turn off rest chamarTelaPrincipal.btnDesligarResto.setVisible(false);

              }
              else if (valorlido1 == 'x'){
              arduino.FecharCom();
                  chamarTelaPrincipal.Info.setText("Não e possivel dar a Partida!");
                  delay.delay(1500);
                  chamarTelaPrincipal.Info.setText("Freio de mão não acionado!");


                  chamarTelaPrincipal.btnDesligar.setEnabled(false);//botao desligar

is activated

                              chamarTelaPrincipal.btnLigarMotor.setEnabled(true);//botao ligar fica

deactivated

                              chamarTelaPrincipal.btnDesligar.setEnabled(false);//botao ligar fica

deactivated

                              chamarTelaPrincipal.jBDesligar.setVisible(false); 
                              chamarTelaPrincipal.jBDesligar.setEnabled(false); //botao desligar

autonomously enable mode

                              chamarTelaPrincipal.jBLigar.setEnabled(true); // botao ligar modo

autonomously disables chamarTelaPrincipal.jBLigar.setVisible(true);

                              chamarTelaPrincipal.btnLigarResto.setEnabled(false); //botao ligar

rest disables chamarTelaPrincipal.btnLigarResto.setVisible(false);

                              chamarTelaPrincipal.btnDesligarResto.setEnabled(false);// botao

turn off rest chamarTelaPrincipal.btnDesligarResto.setVisible(false);

              }
              else if(valorlido1 == 't'){
                  arduino.FecharCom();
                  chamarTelaPrincipal.Info.setText("Não e possivel dar a Partida!");
                  delay.delay(1500);
                  chamarTelaPrincipal.Info.setText("Marcha 1 Engatada!");



                  chamarTelaPrincipal.btnDesligar.setEnabled(false);//botao desligar

is activated

                              chamarTelaPrincipal.btnLigarMotor.setEnabled(true);//botao ligar fica

deactivated

                              chamarTelaPrincipal.btnDesligar.setEnabled(false);//botao ligar fica

deactivated

                              chamarTelaPrincipal.jBDesligar.setVisible(false); 
                              chamarTelaPrincipal.jBDesligar.setEnabled(false); //botao desligar

autonomously enable mode

                              chamarTelaPrincipal.jBLigar.setEnabled(true); // botao ligar modo

autonomously disables chamarTelaPrincipal.jBLigar.setVisible(true);

                              chamarTelaPrincipal.btnLigarResto.setEnabled(false); //botao ligar

rest disables chamarTelaPrincipal.btnLigarResto.setVisible(false);

                              chamarTelaPrincipal.btnDesligarResto.setEnabled(false);// botao

turn off rest chamarTelaPrincipal.btnDesligarResto.setVisible(false);

              }

              else{
                  arduino.FecharCom();
                  chamarTelaPrincipal.Info.setText("Houve algum problema na Conexao!");
              }
      }

      else {
          arduino.FecharCom();
          chamarTelaPrincipal.Info.setText("Houve algum problema na Conexao!");


      }           return valorlido;
  } }
Veja que aqui atualizo a gui do programa java e precisso tambem enviar um feedback para a aplicao android
              chamarTelaPrincipal.Info.setText("Carro Ligou!");
              // Preciso aqui um metodo para enviar a informacao para o  a    android


              chamarTelaPrincipal.btnDesligar.setEnabled(true);//botao desligar

is activated

  • But if you already have a server on the pc created which need to create one for android device ?

  • For example. Sends a data from android to pc. In the server socket on the pc receives this value and makes a condition, inside a switch checks which command received and executes another method. During the execution of these methods he has to send information back to android, I will put the code to Voce take a look. When the method is called it needs to send information back to android, as I could do it?

No answers

Browser other questions tagged

You are not signed in. Login or sign up in order to post.