Boa Noite Galera!
Este e meu primeiro topico no GUJ e venho pedir ajuda aos mais experientes para poder resolver um probleminha que estou tendo.
Estou a construir uma aplicação java que possui uma thread que escuta uma conexão socket. Dentro desse socket, como podem ver no codigo, quando eu recebo o carácter 2, executa um método SwingWorker que executa outros métodos e atualiza a interface da aplicação.
Classe que criar a thread servidor socket:
package tanio;
import javax.swing.SwingWorker;
class socketServer implements Runnable{
String clientSentence = ""; String capitalizedSentence;
int porta = 9856;
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("Conexao aceita….");
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);
int valorconvertido = Integer.parseInt(clientSentence); System.out.println(valorconvertido);
switch (valorconvertido){
case 2:
teste chamarteste = new teste(); teste.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"); }
}
}
}
Classe que executa a thread servidor socket:
package tanio;
import java.io.IOException;
import javax.swing.SwingWorker;
import tanio.socketServer;
public class chamarsocketServer
{
public static void main (String args[]) {
socketServer rodar = new socketServer(); Thread t = new Thread(rodar); t.start(); }
}
Classe teste:
package tanio;
import javax.swing.SwingWorker;
public class teste extends SwingWorker{
@Override protected Object doInBackground() throws Exception {
System.out.println(“Comando Recebido!”);
///necessito aqui que chame um metodo que envie a resposta pela conexao socket ja criada
return null; }
}
Quando no servidor socket recebe o caracter 2 ele chama o metodo teste, preciso que nessa classe teste ele chame um metodo que envie a resposta(um caracter, uma string ou ate um inteiro) pela conexao socket, ou seja responder que a classe teste foi chamada corretamente. Como eu faço para criar este metodo, sabendo que uma conexao socket na porta 9856 ja esta aberta na thread principal, apenas quero que o metodo escreva nela a saiaa apos executar o metodo . Sou iniciante e intendo pouco de thread, peço que alguem me de um exemplo de como fazer isso, ou que ferramentas usar. Aguardo…