Java - Detectar pérdida Socket TCP

 
Vista:

Detectar pérdida Socket TCP

Publicado por Pedrito (4 intervenciones) el 04/05/2010 10:05:48
Buenas,
Tengo una aplicación Java que se conecta por medio de socket tcp a otra máquina que implementa el servidor. La aplicación tras conectarse al servidor, le manda un mensaje indicando que se da de alta, tras esto, se queda comprobando si el servidor manda mensajes. El problema es que si se pierde la red, mi aplicación (el cliente de sockets TCP) no se entera que se ha perdido la conexión con el servidor. ¿Cómo puedo hacer para que el cliente detecte que se ha perdido la conexión? No puedo realizar modificaciones en la parte servidora.

Pongo el código de la parte cliente:

boolean salir = false;
String serverHostname = new String ("192.168.100.50");

Socket echoSocket = null;
PrintWriter out = null;
BufferedReader in = null;

try {
// echoSocket = new Socket("taranis", 7);
echoSocket = new Socket(serverHostname, 65000);
out = new PrintWriter(echoSocket.getOutputStream(), true);
in = new BufferedReader(new InputStreamReader(
echoSocket.getInputStream()));
} catch (UnknownHostException e) {
System.err.println("Don't know about host: " + serverHostname);
System.exit(1);
} catch (IOException e) {
System.err.println("Couldn't get I/O for "
+ "the connection to: " + serverHostname);
System.exit(1);
}

out.flush();

String leido = "";
out.write("DADO_ALTA");
out.flush();
while(!salir){
while(in.ready()){
char ch1 = (char) in.read();
leido+= ch1;
if(leido.equalsIgnoreCase("SALIR")){
out.close();
in.close();
echoSocket.close();
salir = true;
}
else{
trataLeido(leido);
leido = "";

}
}
try {
Thread.sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

System.out.println("FIN");
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder