Ver Mensaje Individual
  #1 (permalink)  
Antiguo 27/05/2009, 08:15
Valentinoo
 
Fecha de Ingreso: abril-2007
Mensajes: 40
Antigüedad: 17 años
Puntos: 0
Pregunta Problema al detectar si un cliente sigue conectado

Buenos Días,

Acudo a vosotros ya que tengo un problema con los sockets.

Resulta que tengo una clase que hace de servidor esperando conexiones por X puerto. Una vez establecida una conexion, saca el canal de entrada (inputStream) y el canal de salida (outputStream) del socket cliente y crea 2 hilos. Al crear el primer hilo se le pasa el canal de entrada y el socket y al segundo el canal de salida para que cada uno pueda recibir / enviar datos cuando deseen. Estos mismo hilos tambien se crean en el cliente al conectarse para que tambien puedan enviar y recibir datos cuando deseen. Con esto lo que consigo es una comunicación bidireccional total.

La primera duda es si estoy haciendo bien las cosas para conseguir esa comunicación bidireccional.

Ahora viene el gran problema. Resulta que en los hilos creados, en el metodo run, tengo un while que envia o espera datos y se ejecuta mientras socket.isConnected. Pero el problema es que socket.isConnected siempre me devuelve true, es decir que si paro el cliente, el servidor sigue esperando / enviando datos al cliente con su correspondiente pete ya que el cliente no esta conectado. Mi pregunta es: ¿Como puedo saber cuando un cliente ya no esta conectado al servidor? o mejor dicho ¿Como se cuando un socket se ha cerrado?


Gracias y antemano,
Gabriel