quiero hacerles una consulta, resulta que tengo una función recursiva que se ejecuta cada 10 segundos, es decir cada vez que termina de extraer un archivo espera 10 segundos y vuelve a comenzar, el problema es que no he conseguido construir una función que haga un test de conexión a 3 host para ver cual esta disponible (si alguno sabe como hacerlo, mucho le agradeceré que me pase el dato), lo más que he consegudido es crear un socket y comprobar si hay conexión con el host, en caso de que no haya conexión el programa cae en una excepción y termina el programa (pero tarda mucho en hacer esta comprobación), quiero saber si hay forma de que si no se logra la conexión en 5 segundos haga otra cosa y no genere una excepción, sino que busquemos otro host. Esta es la función que revisa el socket.
Código:
si miramos un poco, la función if realmente lo único que hace es devolverme true cuando hay conexión, pero en el caso contrario se va hasta la excepción, la idea es unificar la función anterior con la de abajo, para que cuando al primer host al que intenta conectarse no esta disponible, busque un segundo host y de ser posible un tercero si es que el segundo no esta accesible.import java.io.*; import java.net.*; public class alive { public static void main(String args[]) { try { Socket socket = new Socket(); socket.connect(new InetSocketAddress("192.168.1.221", 1025)); if(!socket.getKeepAlive()) { socket.setKeepAlive(true); System.out.println("La conexion es: " + socket.getKeepAlive()); socket.close(); } else { System.out.println("No hay conexion"); socket.close(); } } catch(Exception exception) { System.out.println("La conexion ha fallado"); } } }
Código:
ojalá puedan darme una mano o alguna idea, gracias de antemano por todas sus respuestas y comentarios.class BUSCA extends Thread { private boolean running = true; public BUSCA() {} public void run() { while (running) { testCallExe(); copyFile(); try { System.out.println(""); System.out.println("Buscando"); //Contador de tiempo a 10 segundos que nunca se detiene Thread.sleep(10000); } catch (InterruptedException e) { running = false; } } }
les mando un saludo.