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.