php实现的ping端口函数实例

 更新时间:2014年11月12日 12:02:30   投稿:shichen2014  
这篇文章主要介绍了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程序设计有所帮助。

相关文章

  • PHP+Mysql实现多关键字与多字段生成SQL语句的函数

    PHP+Mysql实现多关键字与多字段生成SQL语句的函数

    这篇文章主要介绍了PHP+Mysql实现多关键字与多字段生成SQL语句的函数,涉及字符串与数组的操作,是构造SQL语句非常实用的技巧,需要的朋友可以参考下
    2014-11-11
  • 解析php dirname()与__FILE__常量的应用

    解析php dirname()与__FILE__常量的应用

    本篇文章是对php中的dirname()与__FILE__常量的应用进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • PHP生成短网址方法汇总

    PHP生成短网址方法汇总

    本文给大家汇总介绍了3种使用php生成短网址的方法,第一种是PHP+MySQl实现短网址的生成和读取,第二种是php+ini方式,第三种跟第一种有些类似,各有利弊,小伙伴们可以根据自己的项目需求来选择。
    2016-07-07
  • 探讨:如何编写PHP扩展

    探讨:如何编写PHP扩展

    本篇文章是对如何编写PHP扩展进行了详细的分析介绍, 需要的朋友参考下
    2013-06-06
  • PHPEXCEL 使用小记

    PHPEXCEL 使用小记

    下面的文章主要是介绍基于PHPEXCEL实现的一些excel的操作实现代码,需要的朋友可以参考下
    2013-01-01
  • php实现子字符串位置相互对调互换的方法

    php实现子字符串位置相互对调互换的方法

    这篇文章主要介绍了php实现子字符串位置相互对调互换的方法,可实现简单字符串中两个子字符串互换的功能,涉及php字符串运算与插入、替换等操作的相关技巧,需要的朋友可以参考下
    2016-06-06
  • PHP+AJAX实现无刷新注册(带用户名实时检测)

    PHP+AJAX实现无刷新注册(带用户名实时检测)

    PHP+AJAX实现无刷新注册(带用户名实时检测)...
    2007-01-01
  • php语法技巧代码实例

    php语法技巧代码实例

    这篇文章主要介绍了php语法技巧代码实例,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,有感兴趣的同学可以看一下
    2021-01-01
  • php生成无限栏目树

    php生成无限栏目树

    本文主要介绍了php生成无限栏目树的相关知识。具有很好的参考价值。下面跟着小编一起来看下吧
    2017-03-03
  • php中调用其他系统http接口的方法说明

    php中调用其他系统http接口的方法说明

    本篇文章主要是对php中调用其他系统http接口的方法进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助
    2014-02-02

最新评论