elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Estamos en la red social de Mastodon


  Mostrar Mensajes
Páginas: [1]
1  Programación / Java / Detectar desconexión de socket? 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) {
        this.host = peerhost;    //for storing purposes
        this.port = peerport;
        try {
            socket = new Socket();
            socket.setReceiveBufferSize(100); /*Esto lo hago como prueba de reducir el tamaño del buffer del socket para que no me siga tomando datos luego de quitado el cable de red y me lance una Exception pero nada.*/
            socket.setSoTimeout(15000); //El timeout en 15s
            SocketAddress socketAddress = new InetSocketAddress(InetAddress.getByName(peerhost), port);
            socket.connect(socketAddress);
            out = new PrintWriter(socket.getOutputStream(), true);
            in = new BufferedReader(new InputStreamReader(socket.getInputStream(), "ISO-8859-1"), 100); //Es el buffer del cual leo los datos también le pongo un size máximo de 100 tratando de resolver el problema. Pero nada
        } catch (UnknownHostException execpt) {
  execpt.printStackTrace();
        } catch (IOException execpt) {
  execpt.printStackTrace();
        }

Ahora un poco de código de cómo proceso los datos Este código esta dentro de un Hilo diferente.

Código:
  
      public void run() {

            while (continuar) { // Continuar estara siempre en true para que siempre este pidiendo datos
                try {
                    cbuf = new char[100];// Arreglo para almacenar los datos que leo
                    while ((in.read(cbuf, 0, 100)) != -1) {// in fue declarado en el constructor de la clase leo 100 datos del buffer
                        if (!socket.isConnected()){// compruebo que este conectado el socket
                            System.out.println("Exception");
                            throw new Exception("Can't find host " + host);
                        }
                        temp = new String(cbuf);
//Proceso los datos
                    }
                } catch (IOException execpt) {
                    JOptionPane.showMessageDialog(null, "Desconectado Aparato");
      throw new Exception("Can't find host " + host);
                }
            }
        }

Bueno espero que me puedan ayudar y de ante manos gracias por su tiempo.
Saludos.
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines