Thread? Não esta funcionando! Onde estou errando?

4 respostas
P

Pessoal estou tentando fazer um thread para ler mensagens, porém ele só esta lendo a primeira o que pode ser?

Classe Server

package server;
import java.net.*;
import java.io.*;

public class Server {
	ServerSocket serverSocket = null;
	Socket clientSocket = null;
	BufferedReader reader;

	public Server() {
		try {
		serverSocket = new ServerSocket(2424);
		clientSocket = serverSocket.accept();
		reader = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
		Thread t = new Thread(new Reader());
		t.start();

			
		} catch (IOException ex) {
			System.err.println(ex.getMessage());
		}		
	}
	class Reader implements Runnable{
		public void run(){
			try {
				System.out.println(reader.readLine());
			} catch (IOException ex) {
				System.err.println(ex.getMessage());			
			}
		}
	}	

}

Classe Client

package client;
import java.net.*;
import java.io.*;

public class Client {
	Socket clientSocket = null;
	PrintStream out;

	public Client() {
		try {
			clientSocket = new Socket("127.0.0.1", 2424);
			out = new PrintStream(clientSocket.getOutputStream());		
			while(true) {
				out.println(" TESTE ");	
			}
		} catch(UnknownHostException ex) {
			System.err.println(ex.getMessage());
		} catch(IOException ex) {
			System.err.println(ex.getMessage());
		}
		
	}
}

Grato,
Pablo

4 Respostas

rogeriop80

Desculpe minha ignorancia, mas vc não deveria ter um While infinito dentro do metodo Run() !!! Desta forma ele irá ficar executando sempre aquela função. Como você não tem este While, ele passa apenas uma vez dentro do metodo.

E

Você não colocou a leitura no método run em um laço de repetição…

Se o que você quer é que ele fique buscando mensagens indefinidamente, faça:

public void run(){ 
    try { 
        while (true)
            System.out.println(reader.readLine()); 
    } catch (IOException ex) { 
        System.err.println(ex.getMessage());          
    } 
}
P

Poxá era isso mesmo, valeu!!!

aborges

Recomendo vc colocar um delay dentro deste while, para q ele nao fique executando a todo momento…

while(true){ .... ... Thread.sleep(500); }

Criado 31 de maio de 2004
Ultima resposta 1 de jun. de 2004
Respostas 4
Participantes 4