php实现的ping端口函数实例

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