Foros del Web » Programación para mayores de 30 ;) » Java »

Trabajando con sockets

Estas en el tema de Trabajando con sockets en el foro de Java en Foros del Web. Buenas 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 ...
  #1 (permalink)  
Antiguo 10/02/2009, 16:27
 
Fecha de Ingreso: marzo-2008
Mensajes: 63
Antigüedad: 16 años, 2 meses
Puntos: 0
Trabajando con sockets

Buenas

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:
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");
        }
    }
}
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.
Código:
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;
         }
      }
   }
ojalá puedan darme una mano o alguna idea, gracias de antemano por todas sus respuestas y comentarios.

les mando un saludo.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:58.