PHP: verificare se una porta di un host è aperta

In questo articolo vedremo come verificare se una porta di un host remoto è aperta con PHP.

La soluzione è la seguente:


function check_if_port_is_open($host, $port, $timeout) {
    $connection = @fsockopen($host, $port, $errno, $errstr, $timeout);
    if (is_resource($connection)) {
        fclose($connection);
        return true;
    }
    return false;
}

La funzione inizia aprendo una connessione tramite la funzione fsockopen(). Questa funzione crea una connessione di rete a un indirizzo specificato, utilizzando un protocollo specificato (in questo caso, il protocollo TCP/IP). Il simbolo @ all'inizio della chiamata a fsockopen() viene utilizzato per sopprimere gli eventuali messaggi di errore generati dalla funzione.

Se la connessione viene stabilita con successo, la funzione fsockopen() restituirà una resource (risorsa), che è un tipo di dato speciale in PHP utilizzato per rappresentare risorse esterne come file, connessioni di rete o altre entità. In questo caso, la risorsa rappresenta la connessione di rete stabilita.

La funzione successivamente verifica se la risorsa della connessione è un oggetto valido utilizzando la funzione is_resource(). Se la risorsa è valida, significa che la connessione è stata stabilita correttamente e la porta è aperta. Pertanto, la funzione chiude la connessione utilizzando la funzione fclose() per liberare le risorse e restituisce true per indicare che la porta è aperta.

Se la connessione non viene stabilita correttamente o la risorsa non è valida, la funzione restituisce false per indicare che la porta è chiusa.

Torna su