Título: Detectar desconexión de socket? Publicado por: leinier04 en 23 Agosto 2011, 17:37 pm Buenas,
Estoy empezando a trabajar con socket y a lo mejor es un poco básica mi pregunta pero no logro ver que problema tengo, Estoy conectándome a un servidor que me manda datos constantemente, me conecto sin problemas y proceso los datos pero haciendo pruebas quito el cable de red en el cliente y la aplicación no me lanza ninguna Exception y sin embargo la aplicación me sigue recibiendo datos no se en donde se me quedan y como resolver el problema. Ahora un poco de mi código para que vean que es lo que hago para conectarme ect. Código: private NSocket (String peerhost, int peerport) { Ahora un poco de código de cómo proceso los datos Este código esta dentro de un Hilo diferente. Código:
Bueno espero que me puedan ayudar y de ante manos gracias por su tiempo. Saludos. Título: Re: Detectar desconexión de socket? Publicado por: Valkyr en 23 Agosto 2011, 20:11 pm En principio, sí desconectases el cable y por tanto no se pudiese realizar la conexión, a la hora de crear el objeto in:
Código Debería lanzarte una excepción que por lo que veo capturarías y mostrarías la traza por consola. Sí estableces la conexión y entonces desconectas el cable podría pasar esto: Cita de: http://download.oracle.com/javase/7/docs/api/java/net/Socket.html#getInputStream() Under abnormal conditions the underlying connection may be broken by the remote host or the network software (for example a connection reset in the case of TCP connections). When a broken connection is detected by the network software the following applies to the returned input stream :-
Leyendo ahora sobre el método read de InputStream, he leido lo siguiente: Cita de: http://download.oracle.com/javase/7/docs/api/java/io/InputStream.html#read(byte[ , int, int)]This method blocks until input data is available, end of file is detected, or an exception is thrown. Así que en principio debería lanzarte de nuevo una excepción de entrada salida, pero veo que la capturas. ¿Estás seguro de que no muestra nada ni por consola ni el JDialog?. Después de lo que he leído lo único que se me ocurre es que se quede bloqueado esperando a que hayan datos disponibles. Espero que alguien pueda enfocarte un poco mejor a la solución. Saludos. |