Ver Mensaje Individual
  #7 (permalink)  
Antiguo 06/07/2011, 14:40
Avatar de Ferkhis
Ferkhis
 
Fecha de Ingreso: mayo-2011
Ubicación: Medellín
Mensajes: 52
Antigüedad: 13 años
Puntos: 2
Pregunta Respuesta: Cómo Cancelar lectura de DataInputStream en un while dentro de un Hilo (th

Cita:
Iniciado por chuidiang Ver Mensaje
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.
Hey Chudiang gracias por contestar!

Ya vi porque el programa se me cierra sólo, yo en los catch tenia System.exit(1); pero no lo recordaba ya que llevo varios días en este programa. Pero yo lo arreglé y todo bien. Sin embargo si desconecto mi aplicación y la quiero conectar de nuevo, para la ultima vez que la cerré mi DataInputStream (InputMEssage) ya está en un "estado de error"... qué puedo hacer para reinicializarlo y sacaro de ahí, para que siga funcionando normalmente?