加入收藏 | 设为首页 | 会员中心 | 我要投稿 银川站长网 (https://www.0951zz.com/)- 云通信、基础存储、云上网络、机器学习、视觉智能!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php达成的ping端口函数实例

发布时间:2023-05-04 12:45:45 所属栏目:PHP教程 来源:
导读:这篇文章主要介绍了php实现的ping端口函数,以实例形式较为详细的分析了PHP使用socket编程的技巧,需要的朋友可以参考下本文实例讲述了php实现的ping端口函数。分享给大家供大家参考。具体实现代码如下:<?php /* * @

这篇文章主要介绍了php实现的ping端口函数,以实例形式较为详细的分析了PHP使用socket编程的技巧,需要的朋友可以参考下

本文实例讲述了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程序设计有所帮助。

(编辑:银川站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!