php实现的ping端口函数实例

前端技术 2023/09/02 PHP

本文实例讲述了php实现的ping端口函数。分享给大家供大家参考。

具体实现代码如下:

复制代码 代码如下:

<?php
/*
 * @author     xujiajay
 * @date       2010-10-7
 * @function   可以ping端口的php函数
 *
 */
    error_reporting(E_ERROR);
    header(\"content-Type: text/html; charset=utf-8\");
    set_time_limit(120);
    $host = isset($_POST[\'url\']) ? chop(str_replace(\'http://\',\'\',$_POST[\'url\'])) : \'www.baidu.com\';
    $port = isset($_POST[\'duankou\']) ? chop($_POST[\'duankou\']) : \'80\';
    $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 \'unknown\';
            $get = \"GET / HTTP/1.1\\r\\nHost:\".$host.\"\\r\\nConnection: Close\\r\\n\\r\\n\";
            @fputs($fp,$get);
            $data = \'\';
            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],\'Server\')){$k = $i; break;}
            }
            if(!stristr($array[$k],\'Server\')) return \'unknown\';
            else return str_replace(\'Server\',\'服务器软件\',$array[$k]);
    }
    function ping($host,$port)
    {
            $time_start = microtime_float();
            $ip = gethostbyname($host);
            $fp = @fsockopen($host,$port,&$errno,&$errstr,1);
            if(!$fp) return \'Request timed out.\'.\"\\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 \'Reply from \'.$ip.\': time=\'.$time.\'ms\';
    }
    if(isset($_POST[\'url\']) && isset($_POST[\'duankou\']))
    {
            echo \'<font color=\"#FF0000\">\'.getsoft($host,$port).\'</font>\';
            echo \'Pinging \'.$host.\' [\'.gethostbyname($host).\'] with Port:\'.$port.\' of data:\'.\"\\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>

希望本文所述对大家的PHP程序设计有所帮助。

本文地址:https://www.stayed.cn/item/4235

转载请注明出处。

本站部分内容来源于网络,如侵犯到您的权益,请 联系我

我的博客

人生若只如初见,何事秋风悲画扇。