Heim  >  Artikel  >  Backend-Entwicklung  >  Beispielcode einer in PHP implementierten Ping-Port-Funktion

Beispielcode einer in PHP implementierten Ping-Port-Funktion

怪我咯
怪我咯Original
2017-07-16 11:18:211786Durchsuche

Ping ist ein Befehl unter Windows-, Unix- und Linux-Systemen. Ping gehört ebenfalls zu einem Kommunikationsprotokoll und ist Teil des TCP/IP-Protokolls. Mit dem Befehl „ping“ können Sie prüfen, ob das Netzwerk verbunden ist, was uns bei der Analyse und Feststellung von Netzwerkfehlern helfen kann. Anwendungsformat: Ping-Space-IP-Adresse. Dieser Befehl kann auch mit vielen Parametern verwendet werden. Geben Sie insbesondere Ping ein und drücken Sie die Eingabetaste, um detaillierte Anweisungen anzuzeigen.

PING (Packet Internet Groper), ein Internet-Paket-Explorer, ist ein Programm zum Testen der Netzwerkverbindungslautstärke. Ping sendet ein ICMP (Internet Control Messages Protocol), das ist das Internet Message Control Protocol; es wird eine Echo-Anforderungsnachricht an das Ziel gesendet und meldet, ob das gewünschte ICM-Echo (ICMP-Echo-Antwort) empfangen wird. Mit diesem Befehl wird überprüft, ob das Netzwerk reibungslos funktioniert oder wie schnell die Netzwerkverbindung ist. Als Administrator oder Hacker, der im Netzwerk lebt, ist der Ping-Befehl der erste DOS-Befehl, den er beherrschen muss. Das Prinzip ist folgendes: Senden Sie eine Nachricht an das Ziel, indem Sie die Eindeutigkeit der IP-Adresse des Computers im Netzwerk nutzen Geben Sie ein Datenpaket ein und bitten Sie dann die andere Partei, ein Datenpaket derselben Größe zurückzusenden, um festzustellen, ob die beiden Netzwerkmaschinen verbunden sind und wie hoch die Verzögerung ist.

Ping bezieht sich auf eine End-to-End-Konnektivität, die normalerweise zur Überprüfung der Verfügbarkeit verwendet wird. Einige Viren und Trojaner zwingen jedoch eine große Anzahl von Remote-Ping-Befehlen dazu, Ihre Netzwerkressourcen zu beanspruchen, wodurch das System beschädigt wird zu verlangsamen und die Netzwerkgeschwindigkeit zu verlangsamen. Das strikte Verbot des Ping-Einbruchs ist eine Grundfunktion der meisten Firewalls, die den Benutzern zur Auswahl steht. Unter normalen Umständen, wenn Sie es nicht als Server verwenden oder Netzwerktests durchführen, können Sie es bedenkenlos zum Schutz Ihres Computers auswählen.

Dieser Artikel stellt hauptsächlich die von PHP implementierte Ping-Port-Funktion vor und analysiert detailliert die Fähigkeiten von PHP mithilfe der Socket-Programmierung in Form von Beispielen. Der spezifische Implementierungscode lautet wie folgt:

<?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>

Das obige ist der detaillierte Inhalt vonBeispielcode einer in PHP implementierten Ping-Port-Funktion. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn