
25/04/2006, 01:20
|
 | Colaborador | | Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 20 años, 4 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. |