Thread + Socket (duvida)

4 respostas
D

oi, eu estou estudando java por conta propria e comecei a fazer um programa com um cliente e servidor usando socket tcp/ip

cheguei a conseguir fazer a conexao e enviar uma string..
mas percebi q após alguns segundos a conexao acabava.

num sei se foi erro do algoritimo ou sei lah o q ..
mas pensei em fazer uma thread soh para a conexao do socket

no servidor fiz isso: (vejam e me falem o q vcs acham.. e tentem nme ajudar por favor)

class ConexaoThread extends Thread{
	
   public ServerSocket serv=null; 
    public Socket s= null;
    public BufferedReader entrada=null;
    String str;
    String strout="";
	
	public ConexaoThread() {
		super();
	}
	
	public void run(){
		
		try{
	            serv = new ServerSocket(80);
	            s = serv.accept();
	            entrada = new BufferedReader(new InputStreamReader(s.getInputStream()));
	            
	           
	            while ((str = entrada.readLine()) != null) {
	            	strout = strout + str;	            	
	            }
	            entrada.close();
	         
	        }
	        
	        catch(IOException e){
	          System.out.println("Erro ao criar ou Receber dados pelo socket.");
	         } 
	   }
	}
public class Server{

...
...

private void Cria_ServerSocket(){  
		ConexaoThread t1= new ConexaoThread();
		t1.start();
		ServerLog_txt.setText(ServerLog_txt.getText() + t1.strout);
        
   }
...
...

essa funcao Cria_ServerSocket está associado a um botao.

rodei aki e to recebendo a msg de erro q eu configurei no IOException.

se quiserem posso anexar aki um link com o source se ajudar.

4 Respostas

F

Ta… deixa eu ver se entendi…

Tu abre a conexão na porta 80 (?? tenta uma outra… de valor alto… tipo 65500, essa provavelmente ja esta em uso).

E posta aí a menssagem de erro… tipo… coloca um e.printStack() (acho que é esse o método que te imprimi na tela exatamente onde ta dando erro…)

catch(IOException e){ System.out.println("Erro ao criar ou Receber dados pelo socket: "e.printStack()); }

Abraços!

D

blz… vo tentar isso sim

e posto aki o resultado.

mas a parte da thread tah certa? Seria interessante eu ter uma thread soh para a conexao?

F

Se o que tu diz sobre CONEXÃO for, para cada “chat”, por exemplo, que abrir com uma pessa, sim… muito bom utilizar uma thread pra cada uma… tipo um MSN… para cada janela aberta… uma thread!!!

S

Na minha opinião, a classe Servidor (que contém o ServerSocket) não deve ser uma thread.
Você deve criar uma thread pra cada cliente que se conectar.

Criado 13 de julho de 2006
Ultima resposta 17 de jul. de 2006
Respostas 4
Participantes 3