Ver Mensaje Individual
  #5 (permalink)  
Antiguo 25/04/2006, 01:20
Avatar de chuidiang
chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 20 años, 3 meses
Puntos: 454
Hola:

Si solo tienes un cliente, no necesitas hilos (hebras). Coloca el bucle while de esta otra forma

while (true)
{
Socket cliente = socket.accept()
while (noDesconectado)
{
cliente.read()
tratar mensaje
}
cliente.close();
}

Sabrás que el cliente se ha desconectado cuando el cliente.read() te salte una excepcion o te devuelva un null, 0, -1 o cualquier cosa de que no ha leido nada. Pongo read() por simplificar, pero tendrías que usar para leer los métodos que estás usando ahora.

Si tienes varios clientes a la vez, entonces sí debes usar hilos, un hilo para cada cliente. La idea es similar, pero el bucle while(noDesconectado) y el cliente.close() debes meeterlo en un hilo.

Haz una clase que implemente Runnable, mete en el metodo run() el while(noDesconectado) y el cliente.close(), pásale en el constructor y para que se lo guarde todo lo que necesites (socket cliente, datos, etc). Si esta clase se llama HiloCliente, luego haces esto

while (true)
{
Socket cliente = socket.accept()
Thread hilo = new Thread(new HiloCliente(cliente,...));
hilo.start();
}

Se bueno.
__________________
Apuntes Java
Wiki de Programación