当前位置:首页 > PHP教程 > php函数 > 列表

php实现的ping端口函数实例

发布:smiling 来源: PHP粉丝网  添加日期:2021-04-25 14:27:20 浏览: 评论:0 

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

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

具体实现代码如下:

  1. <?php 
  2. /* 
  3.  * @author     xujiajay 
  4.  * @date       2010-10-7 
  5.  * @function   可以ping端口的php函数 
  6.  * 
  7.  */ 
  8.     error_reporting(E_ERROR); 
  9.     header("content-Type: text/html; charset=utf-8"); 
  10.     set_time_limit(120); 
  11.     $host = isset($_POST['url']) ? chop(str_replace('http://','',$_POST['url'])) : 'www.baidu.com'
  12.     $port = isset($_POST['duankou']) ? chop($_POST['duankou']) : '80'
  13.     $num  = 10; 
  14.     function microtime_float() 
  15.     { 
  16.             list($usec$sec) = explode(" ", microtime()); 
  17.             return ((float)$usec + (float)$sec); 
  18.     } 
  19.     function getsoft($host,$port
  20.     { 
  21.             $fp = @fsockopen($host,$port,&$errno,&$errstr,3); 
  22.             if(!$fpreturn 'unknown'
  23.             $get = "GET / HTTP/1.1\r\nHost:".$host."\r\nConnection: Close\r\n\r\n"
  24.             @fputs($fp,$get); 
  25.             $data = ''
  26.             while ($fp && !feof($fp)) 
  27.             $data .= fread($fp, 1024); 
  28.             @fclose($fp); 
  29.             $array = explode("\n",$data); 
  30.             $k = 2; 
  31.             for($i = 0;$i < 20;$i++) 
  32.             { 
  33.                     if(stristr($array[$i],'Server')){$k = $ibreak;} 
  34.             } 
  35.             if(!stristr($array[$k],'Server')) return 'unknown'
  36.             else return str_replace('Server','服务器软件',$array[$k]); 
  37.     } 
  38.     function ping($host,$port
  39.     { 
  40.             $time_start = microtime_float(); 
  41.             $ip = gethostbyname($host); 
  42.             $fp = @fsockopen($host,$port,&$errno,&$errstr,1); 
  43.             if(!$fpreturn 'Request timed out.'."\r\n"
  44.             $get = "GET / HTTP/1.1\r\nHost:".$host."\r\nConnection: Close\r\n\r\n"
  45.             @fputs($fp,$get); 
  46.             @fclose($fp); 
  47.             $time_end = microtime_float(); 
  48.             $time = $time_end - $time_start
  49.             $time = ceil($time * 1000); 
  50.             return 'Reply from '.$ip.': time='.$time.'ms'
  51.     } 
  52.     if(isset($_POST['url']) && isset($_POST['duankou'])) 
  53.     { 
  54.             echo '<font color="#FF0000">'.getsoft($host,$port).'</font>'
  55.             echo 'Pinging '.$host.' ['.gethostbyname($host).'] with Port:'.$port.' of data:'."\r\n"
  56.             ob_flush(); 
  57.             flush(); 
  58.             for($i = 0;$i < $num;$i++) 
  59.             { 
  60.                     echo ping($host,$port); 
  61.                     ob_flush(); 
  62.                     flush(); 
  63.                     sleep(1); 
  64.             } 
  65.     } 
  66. ?> 
  67. <form method="POST"
  68. 域名/IP:<input type="text" name="url" value="<?php echo $host;?>" size="50"
  69. 端口:<input type="text" name="duankou" value="<?php echo $port;?>" size="10"
  70. <input type="submit" value="ping"
  71. </form> 

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

Tags: ping端口函数

分享到: