Maison  >  Article  >  développement back-end  >  Exemple de code de la fonction de port ping implémentée en PHP

Exemple de code de la fonction de port ping implémentée en PHP

怪我咯
怪我咯original
2017-07-16 11:18:211787parcourir

Ping est une commande sous les systèmes Windows, Unix et Linux. Ping appartient également à un protocole de communication et fait partie du protocole TCP/IP. Vous pouvez utiliser la commande « ping » pour vérifier si le réseau est connecté, ce qui peut nous aider à analyser et à déterminer les défauts du réseau. Format de l'application : adresse IP de l'espace ping. Cette commande peut également être utilisée avec de nombreux paramètres. Plus précisément, tapez Ping et appuyez sur Entrée pour voir des instructions détaillées.

PING (Packet Internet Groper), un explorateur de paquets Internet, est un programme utilisé pour tester le volume de connexion réseau. Ping envoie un ICMP (Internet Control Messages Protocol), qui est le protocole de contrôle des messages Internet ; un message de demande d'écho est envoyé à la destination et indique si l'écho ICM souhaité (réponse d'écho ICMP) est reçu. C'est une commande utilisée pour vérifier si le réseau est fluide ou la vitesse de connexion réseau. En tant qu'administrateur ou hacker vivant sur le réseau, la commande ping est la première commande DOS qu'il faut maîtriser. Le principe qu'elle utilise est le suivant : en utilisant l'unicité de l'adresse IP de la machine sur le réseau, envoyer un message à la cible. Adresse IP. Un paquet de données, puis demandez à l'autre partie de renvoyer un paquet de données de même taille pour déterminer si les deux machines du réseau sont connectées et quel est le délai.

Ping fait référence à la connectivité de bout en bout, qui est généralement utilisée pour vérifier la disponibilité. Cependant, certains virus et chevaux de Troie forceront un grand nombre de commandes ping à distance à s'emparer des ressources de votre réseau, provoquant ainsi le système. pour ralentir et la vitesse du réseau pour ralentir. Interdire strictement l'intrusion ping en tant que fonction de base de la plupart des pare-feu au choix des utilisateurs. Dans des circonstances normales, si vous ne l'utilisez pas comme serveur ou si vous n'effectuez pas de tests réseau, vous pouvez le sélectionner en toute sécurité pour protéger votre ordinateur.

Cet article présente principalement la fonction de port ping implémentée par PHP, et analyse en détail les compétences de PHP en utilisant la programmation socket sous forme d'exemples. Le code d'implémentation spécifique. est la suivante :

<?php
/*
 * @function   可以ping端口的php函数
 *
 */
    error_reporting(E_ERROR);
    header("content-Type: text/html; charset=utf-8");
    set_time_limit(120);
    $host = isset($_POST[&#39;url&#39;]) ? chop(str_replace(&#39;http://&#39;,&#39;&#39;,$_POST[&#39;url&#39;])) : &#39;www.baidu.com&#39;;
    $port = isset($_POST[&#39;duankou&#39;]) ? chop($_POST[&#39;duankou&#39;]) : &#39;80&#39;;
    $num  = 10;
    function microtime_float()
    {
            list($usec, $sec) = explode(" ", microtime());
            return ((float)$usec + (float)$sec);
    }
    function getsoft($host,$port)
    {
            $fp = @fsockopen($host,$port,&$errno,&$errstr,3);
            if(!$fp) return &#39;unknown&#39;;
            $get = "GET / HTTP/1.1\r\nHost:".$host."\r\nConnection: Close\r\n\r\n";
            @fputs($fp,$get);
            $data = &#39;&#39;;
            while ($fp && !feof($fp))
            $data .= fread($fp, 1024);
            @fclose($fp);
            $array = explode("\n",$data);
            $k = 2;
            for($i = 0;$i < 20;$i++)
            {
                    if(stristr($array[$i],&#39;Server&#39;)){$k = $i; break;}
            }
            if(!stristr($array[$k],&#39;Server&#39;)) return &#39;unknown&#39;;
            else return str_replace(&#39;Server&#39;,&#39;服务器软件&#39;,$array[$k]);
    }
    function ping($host,$port)
    {
            $time_start = microtime_float();
            $ip = gethostbyname($host);
            $fp = @fsockopen($host,$port,&$errno,&$errstr,1);
            if(!$fp) return &#39;Request timed out.&#39;."\r\n";
            $get = "GET / HTTP/1.1\r\nHost:".$host."\r\nConnection: Close\r\n\r\n";
            @fputs($fp,$get);
            @fclose($fp);
            $time_end = microtime_float();
            $time = $time_end - $time_start;
            $time = ceil($time * 1000);
            return &#39;Reply from &#39;.$ip.&#39;: time=&#39;.$time.&#39;ms&#39;;
    }
    if(isset($_POST[&#39;url&#39;]) && isset($_POST[&#39;duankou&#39;]))
    {
            echo &#39;<font color="#FF0000">&#39;.getsoft($host,$port).&#39;</font>&#39;;
            echo &#39;Pinging &#39;.$host.&#39; [&#39;.gethostbyname($host).&#39;] with Port:&#39;.$port.&#39; of data:&#39;."\r\n";
            ob_flush();
            flush();
            for($i = 0;$i < $num;$i++)
            {
                    echo ping($host,$port);
                    ob_flush();
                    flush();
                    sleep(1);
            }
    }
?>
<form method="POST">
域名/IP:<input type="text" name="url" value="<?php echo $host;?>" size="50"> 
端口:<input type="text" name="duankou" value="<?php echo $port;?>" size="10"> 
<input type="submit" value="ping">
</form>

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn