Thread com Socket

Pessoal,

To com uma duvida…

Tenho uma aplicação com um botão que “ativa server socket”, dai tem esse evento…

jButton5.setVisible(false);

   Servidor Ser = new Servidor();
    Ser.start();
    
    String retorna = Ser.initSocket();
    jButton5.setVisible(true);
    jTextArea1.setText(retorna);

Essa classe servidor tem um metodo initsocket q me retorna o q inputstream (isto é, o que ele recebeu). Quando eu clicar nesse botao ativa server, esse thread tem q ficar me retornando tudo q ele escutou… como eu faço isso? ta certo esse codigo?

/*

  • Server.java

  • Created on 7 de Maio de 2006, 19:41

  • To change this template, choose Tools | Template Manager

  • and open the template in the editor.
    /
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.net.ServerSocket;
    import java.net.Socket;
    import java.io.PrintStream;
    import java.util.ArrayList;
    import java.lang.Thread;
    /
    *

  • @author Alexandre
    */
    public class Servidor extends Thread {
    ServerSocket serv=null;
    Socket s= null;

    /** Creates a new instance of Server */
    public Servidor() {
    }

public void run() {
initSocket();
}

public String initSocket () {

    //Declaro o Socket de comunicação
 
    
    //Declaro o leitor para a entrada de dados
    BufferedReader entrada=null;
            
    try{
        
        //Cria o ServerSocket na porta 7000 se estiver disponível
        serv = new ServerSocket(1500);
    
        //Aguarda uma conexão na porta especificada e cria retorna o socket que irá comunicar com o cliente
        s = serv.accept();
        
        //Cria um BufferedReader para o canal da stream de entrada de dados do socket s
        entrada = new BufferedReader(new InputStreamReader(s.getInputStream()));
        
    serv.close();
    s.close(); 

        //Aguarda por algum dado e imprime a linha recebida quando recebe
        return(entrada.readLine());    

//Encerro o ServerSocket

    //trata possíveis excessões de input/output. Note que as excessões são as mesmas utilizadas para as classes de java.io    
    }catch(IOException e){
    
        //Imprime uma notificação na saída padrão caso haja algo errado.
        System.out.println("Algum problema ocorreu para criar ou receber o socket.");
    
    }    
return("");

}

/*public void matarServer() throws IOException {

}
*/

}

Cara, não ta certo… quando tu da .star() ele nao inicia nada… pq tu tem que implementa o método run() {} na classe… e dentro dele ltu coloca a parte que fica escutando… threads é um estudo muito vasto… então o melhor que tu pode fazer é ler artigos e manuais: http://java.sun.com/developer/codesamples/thrds.html

Da uma olhada nisso! :wink: