加入收藏 | 设为首页 | 会员中心 | 我要投稿 濮阳站长网 (https://www.0393zz.cn/)- 专属主机、数据湖、操作系统、媒体智能、数据分析!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php实现的ping端口函数实例

发布时间:2022-07-30 09:46:40 所属栏目:PHP教程 来源:互联网
导读:这篇文章主要介绍了php实现的ping端口函数,以实例形式较为详细的分析了PHP使用socket编程的技巧,需要的朋友可以参考下 本文实例讲述了php实现的ping端口函数。分享给大家供大家参考。 具体实现代码如下: ?php /* * @author xujiajay * @date 2010-10-7 * @f
  这篇文章主要介绍了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.1rnHost:".$host."rnConnection: Closernrn";
              @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.'."rn";
              $get = "GET / HTTP/1.1rnHost:".$host."rnConnection: Closernrn";
              @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:'."rn";
              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程序设计有所帮助。

(编辑:濮阳站长网)

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

    推荐文章
      热点阅读