A veces conviene saber si tenemos conexion a un puerto de una dirección de red determinada, antes de conectarnos a él, para saber si hay alguin firewall cortandonos el paso o si cierto servicio esta caido.
Desde linea de comandos podriamos probar con “telnet direccion_de_red puerto” para hacer la comprobación a mano.
En una aplicación web si quisieramos redireccionar al usuario a otro sitio o acceder a un servicio de correo por ejemplo… seria una buena práctica el comprobar si esos recursos están disponibles y no tenemos algun firewall por medio, antes de realizar ninguna operación que devuelva un error y no nos quede registrado.
Una forma de hacer esto emdiante php, sería intentando una conexión por sockets al puerto que queramos:
// Dominio o ip a comprobar
$sitio = "www.mi_dominio_o_ip.com";
/**/
// Puerto a comprobar, ponemos el de http en el ejemplo
$puerto = 80;
/**/
$fp = fsockopen($sitio,$puerto,$errno,$errstr,10);
if(!$fp)
{
echo "No ha sido posible la conexión";
// El modo de tratamiento del error puede ser el que se quiera,
//por ejemplo enviar un email.
}else{
echo "Conexión realizada con éxito.";
fclose($fp);
}
Via Sentido Web
Agosto 3rd, 2008 at 12:38 am
Thanks for the post