Asier Marqués

Hablando sobre tecnologías web y otras cosas que me interesan
Archivado como Desarrollo Web, PHP

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

Publicado por Asier Marqués el Miércoles, 13 de Junio del 2007


Puedes seguir los comentarios de ésta entrada via "RSS 2.0" y dejar un trackback desde tu sitio.

Una respuesta to “Comprobar si un puerto de una dirección está abierto por php”

Añade un comentario