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:
Ahora un poco de código de cómo proceso los datos Este código esta dentro de un Hilo diferente a la aplicación.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(); }
Código:
Bueno espero que me puedan ayudar y de ante manos gracias por su tiempo.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); } } }
Saludos.