Socket server com Multi-threading

3 respostas
Seawulf_

Fala pessoal!

Estou tentanto criar um servidor simples em java que recebe as requisições e envia devolta, até ai beleza, mas o problema foi quando tentei colocar threads para cada conexão com o cliente.
O server roda sem problemas, mas quando algum cliente se conecta ele é fechado sem aviso algum… e o cliente fica com a mensagem: ‘Connection refused’

Aqui vai:
principal -> http://pastebin.com/jg2sue5u
thread -> http://pastebin.com/mugdMKDr

3 Respostas

douglas_vidotto

E ae Sewulf, pelo que entendi do seu código, o seu server ta aceitando somente um único cliente. Por que veja bem, o conn.accept() é feito para um cliente e depois o método main termina. Ele precisa ficar dentro de um loop para que ele aceite conexões de mais clientes

Seawulf_

vlw man!

:facepalm: Como sou burro… o accept tem que estar mesmo dentro de um loop… :roll:

Depois de colocar dentro de um while(true), o servidor não repondia as requisições, alterei a linha 9 para:

public class serviceTask [b]extends Thread[/b]

e 24/25 para

PrintWriter out = new PrintWriter(socket.getOutputStream(), true);

Não entendi uma coisa, em um tutorial usava-se ‘implements Runnable’ e no outro ‘extends Thread’, qual é a diferença de um para o outro?

soaresinfo

Quando extende uma thread, você pode chamar o método start diretamente, pois a classe é uma thread. No caso do implements Runnable, você precisa criar um objeto thread e passar a sua classe para construtor, e só então chamar o start dessa thread.

Criado 10 de agosto de 2011
Ultima resposta 11 de ago. de 2011
Respostas 3
Participantes 3