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.
Ahora un poco de código de cómo proceso los datos Este código esta dentro de un Hilo diferente.
Bueno espero que me puedan ayudar y de ante manos gracias por su tiempo.
Saludos.
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 [Seleccionar]
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 [Seleccionar]
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.