Testar se a porta aberta e encaminhada utilizando o PHP

revelação completa: há uma questão semelhanteaqui .

há alguma forma de testar se uma determinada porta está aberta e reencaminhada correctamente usando o PHP? Especificamente, como faço para usar um socket para me conectar a um dado usuário com uma determinada porta?

um exemplo disto está na secção "Custom Port Test" de WhatsMyIP.org/ports.

Author: Community, 2010-02-09

1 answers

Não sei o que você quer dizer com ser "encaminhado corretamente", mas espero que este exemplo faça o truque:

$host = 'stackoverflow.com';
$ports = array(21, 25, 80, 81, 110, 443, 3306);

foreach ($ports as $port)
{
    $connection = @fsockopen($host, $port);

    if (is_resource($connection))
    {
        echo '<h2>' . $host . ':' . $port . ' ' . '(' . getservbyport($port, 'tcp') . ') is open.</h2>' . "\n";

        fclose($connection);
    }

    else
    {
        echo '<h2>' . $host . ':' . $port . ' is not responding.</h2>' . "\n";
    }
}

Resultado:

stackoverflow.com:21 is not responding.
stackoverflow.com:25 is not responding.
stackoverflow.com:80 (http) is open.
stackoverflow.com:81 is not responding.
stackoverflow.com:110 is not responding.
stackoverflow.com:443 is not responding.
stackoverflow.com:3306 is not responding.

Ver http://www.iana.org/assignments/port-numbers para uma lista completa dos números de Porto.

 71
Author: Alix Axel, 2010-02-09 04:30:38