Ver Mensaje Individual
  #1 (permalink)  
Antiguo 26/03/2009, 19:45
oscarmoal
 
Fecha de Ingreso: marzo-2008
Mensajes: 63
Antigüedad: 16 años, 2 meses
Puntos: 0
Pregunta Ayuda con un Socket

Buenas

Tengo un problema un poco grave, debido a que no existe un ping en java y mi aplicación corre con la versión 1.4.2_16 de la maquina virtual, tuve que ponerme a investigar como hacer para saber si un host esta activo dentro de una red. Les comento, cuando el host esta activo la solución funciona de maravilla, el problema viene cuando el host no esta activo, el tiempo que tarda en responder la aplicación que el host no esta activo es excesivo (al rededor de 1 minuto y medio), lo que quiero es reducir ese tiempo a quizá 5 segundos, dicho de otra manera si el host no responde en 5 segundos, cerrar el socket y continuar, pero no tengo idea de como hacerlo, ojalá me puedan dar una mano, se los agradezco mucho.

Código:
        try
        {
            Socket socketA = new Socket();
            //Se crea un nuevo socket y a continuación se especifica la dirección IP y
           //el puerto por el que se conectará
            socketA.connect(new InetSocketAddress("192.168.1.18", 1025));
            if(!socketA.getKeepAlive())
            {
                socketA.setKeepAlive(true);
                System.out.println("La conexion con 192.168.1.18 es: " + socketA.getKeepAlive());
                socketA.close();
            } 
            else
            {  //No se porque la sentencia else la ignora y se va directamente al catch
                System.out.println("La conexion ha fallado");
                socketA.close();
            }
        }
        catch(Exception exception)
        {
            System.out.println("La conexion con el nodo ha fallado");
        }