php实现的ping端口函数实例


Posted in PHP onNovember 12, 2014

本文实例讲述了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 相关文章推荐
php自动跳转中英文页面
Jul 29 PHP
PHP连接SQLServer2005 的问题解决方法
Jul 19 PHP
PHP获取MAC地址的函数代码
Sep 11 PHP
将时间以距今多久的形式表示,PHP,js双版本
Sep 25 PHP
php简单开启gzip压缩方法(zlib.output_compression)
Apr 13 PHP
PHP之生成GIF动画的实现方法
Jun 07 PHP
Zend studio文件注释模板设置方法
Sep 29 PHP
PHP+Memcache实现wordpress访问总数统计(非插件)
Jul 04 PHP
分享常见的几种页面静态化的方法
Jan 08 PHP
PHP 常用的header头部定义汇总
Jun 19 PHP
[原创]php简单防盗链验证实现方法
Jul 09 PHP
浅谈PHP命令执行php文件需要注意的问题
Dec 16 PHP
PHP实现下载断点续传的方法
Nov 12 #PHP
php格式化日期实例分析
Nov 12 #PHP
PHP中的Streams详细介绍
Nov 12 #PHP
PHP产生不重复随机数的5个方法总结
Nov 12 #PHP
php一行代码获取文件后缀名实例分析
Nov 12 #PHP
php中cookie实现二级域名可访问操作的方法
Nov 11 #PHP
php实现的css文件背景图片下载器代码
Nov 11 #PHP
You might like
PHP封装的Twitter访问类实例
2015/07/18 PHP
php实现微信公众平台账号自定义菜单类
2015/10/11 PHP
php array_reverse 以相反的顺序返回数组实例代码
2017/04/11 PHP
PHP基于array_unique实现二维数组去重
2020/07/14 PHP
超级酷和最实用的jQuery实例收集(20个)
2010/04/21 Javascript
Javascript 面向对象 继承
2010/05/13 Javascript
jQuery实现的立体文字渐变效果
2010/05/17 Javascript
使用隐藏的new来创建对象
2011/03/29 Javascript
Javascript中自动切换焦点实现代码
2012/12/15 Javascript
jQuery中map()方法用法实例
2015/01/06 Javascript
javascript消除window.close()的提示窗口
2015/05/20 Javascript
使用prop解决一个checkbox选中后再次选中失效的问题
2017/07/05 Javascript
Webpack中雪碧图插件使用详解
2018/05/25 Javascript
React中使用async validator进行表单验证的实例代码
2018/08/17 Javascript
Puppeteer 爬取动态生成的网页实战
2018/11/14 Javascript
vuecli3.x中轻松4步带你使用tinymce的步骤
2020/06/25 Javascript
[02:08]2018年度CS GO枪械皮肤设计大赛优秀作者-完美盛典
2018/12/16 DOTA
python正则表达式去掉数字中的逗号(python正则匹配逗号)
2013/12/25 Python
在Django的模型中添加自定义方法的示例
2015/07/21 Python
Python SQLite3简介
2018/02/22 Python
OpenCV哈里斯(Harris)角点检测的实现
2020/01/15 Python
python如何编写win程序
2020/06/08 Python
pandas to_excel 添加颜色操作
2020/07/14 Python
css3加js做一个简单的3D行星运转效果实例代码
2017/01/18 HTML / CSS
英国轻奢珠宝品牌:Astley Clarke
2016/12/18 全球购物
Famous Footwear加拿大:美国多品牌运动休闲鞋店
2018/12/05 全球购物
专业毕业生个性的自我评价
2013/10/03 职场文书
应届生妇产科护士求职信
2013/10/27 职场文书
写好自荐信的几个要点
2013/12/26 职场文书
新郎婚宴答谢词
2014/01/19 职场文书
2014年党员承诺书范文
2014/05/20 职场文书
项目经理任命书范本
2014/06/05 职场文书
小学英语教学经验交流材料
2015/11/02 职场文书
长辈生日祝福语大全(72句)
2019/08/09 职场文书
Ajax常用封装库——Axios的使用
2021/05/08 Javascript
一文彻底理解js原生语法prototype,__proto__和constructor
2021/10/24 Javascript