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 ?
– Dev
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?
– Aislan Silva Costa