Problema Socket Multi Thread

3 respostas
L

Pessoal,

Seguinte, tenho a classe abaixo que funciona como um servidor Socket

public class Servidor implements Runnable{
    ServerSocket ss;
    Tela tela;
    
    public Servidor(int porta) throws Exception{
      	ss = new ServerSocket(porta);
        new Thread(this).start();
        //System.out.println("Servidor ouvindo na porta:" +porta);
        tela.setLabel("Servidor ouvindo na porta:" +porta);
    }

    public void run() {
        try{
            while(true){
                new TrataCliente(ss.accept()).start();
                System.out.println("Mais um cliente conectado!");
            }
        }catch(Exception ex){
            ex.printStackTrace();
            System.exit(1);
        }
    }

    public void finalizar(){
        try {
            ss.close();
            System.out.println("Servidor Encerrado");
        } catch (IOException ex) {
            Logger.getLogger(Servidor.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

}

class TrataCliente extends Thread
{
     private Socket client;
     private String mensagem;
     
     public TrataCliente(Socket s){
          client = s;
     }

     public void run(){
          try{
              // aqui vai a sua comunicacao com o cliente
        	  ObjectInputStream oi = new ObjectInputStream(client.getInputStream());
        	  mensagem = (String) oi.readObject();
        	  System.out.println(mensagem);
        	  client.close();
          }
          catch(Exception e){
               e.printStackTrace();
               System.exit(1);
          }
     }
}

Estou com o seguinte problema:
Preciso enviar as mensagens que chegam dos clientes para uma outra classe (Tela), só que não estou conseguindo isso…
Abaixo é um exemplo do que eu gostaria de fazer

public Servidor(int porta) throws Exception{
      	ss = new ServerSocket(porta);
        new Thread(this).start();
        tela.setLabel("Servidor ouvindo na porta:" +porta);
    }

Se utilizo o System.out.println funciona perfeitamente, mas escreve as mensagens no console.

Alguém tem alguma idéia???

3 Respostas

ViniGodoy

No lugar de System.out.println, dispare um evento. Faça a tela capturar esse evento e desenhar o texto (que irá em seu conteúdo) num JTextField.

Se não sabe como criar eventos, dá uma olhada nesse tópico:
http://www.guj.com.br/posts/list/74170.java#389941

L

Valeu Vinícius,

Vou tentar aqui.
Se você tiver um exemplo para passar eu agradeço.

Abraços.

ViniGodoy

Dá uma olhada:
http://www.guj.com.br/posts/list/15/74218.java#506163

Veja o chat em UDP.

Criado 8 de julho de 2009
Ultima resposta 8 de jul. de 2009
Respostas 3
Participantes 2