Ver Mensaje Individual
  #5 (permalink)  
Antiguo 06/07/2011, 02:05
Avatar de chuidiang
chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 7 meses
Puntos: 454
Respuesta: Cómo Cancelar lectura de DataInputStream en un while dentro de un Hilo (th

Hola:

No acabo de entender el problema. Entiendo que quieres detener la lectura ... ¿porque alguien cierra el socket al otro lado?

Si cierran el socket al otro lado te salta una excepción y la capturas con un catch.
Si tú interrumpes la lectura de alguna forma (no estoy seguro si se puede hacer en java), te saltará también una excepción que capturas con un catch.
Si en el socket usas setSoTimeout(), la lectura terminará en el tiempo establecido si no hay datos, pero lanzará una excepción que tienes que capturar con catch.

Es decir, de la excepción no te libra nadie. Con una excepción capturada el programa no se cierra, así que si estás capturando la excepción y se te cierra el programa, posiblemente es porque después de la excepción tu programa no haga nada (si el main lanza esta hilo y no hace mas, cuando este hilo termine, termina el programa).

Si el socket se cierra en el otro lado, el socket que tú tienes ya no vale. No te queda más remedio que volver a intentar establecer la conexión con otro socket nuevo y otro DataInputStream nuevo y posiblemente lanzar un hilo nuevo. Y ese es el código que debe hacer tu programa cuando capturas la excepción para evitar que se cierre.

Se bueno.
__________________
Apuntes Java
Wiki de Programación