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 sprintf()函数让你的sql操作更安全
Jul 23 PHP
php中批量修改文件后缀名的函数代码
Oct 23 PHP
shopex主机报错误请求解决方案(No such file or directory)
Dec 27 PHP
PHP代码审核的详细介绍
Jun 13 PHP
PHP error_log()将错误信息写入一个文件(定义和用法)
Oct 25 PHP
php获取字段名示例分享
Mar 03 PHP
destoon实现公司新闻详细页添加评论功能的方法
Jul 15 PHP
PHP遍历文件夹与文件类及处理类用法实例
Sep 23 PHP
浅谈php优化需要注意的地方
Nov 27 PHP
php实现专业获取网站SEO信息类实例
Apr 02 PHP
PHP中strpos、strstr和stripos、stristr函数分析
Jun 11 PHP
laravel-admin 在列表页添加自定义按钮的例子
Sep 30 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
Linux下ZendOptimizer的安装与配置方法
2007/04/12 PHP
Laravel框架Eloquent ORM简介、模型建立及查询数据操作详解
2019/12/04 PHP
JQuery实现自定义对话框的代码
2008/06/15 Javascript
js读取本地excel文档数据的代码
2010/11/11 Javascript
javascript实现tabs选项卡切换效果(扩展版)
2013/03/19 Javascript
Ajax异步提交表单数据的说明及方法实例
2013/06/22 Javascript
JQuery加载图片自适应固定大小的DIV
2013/09/12 Javascript
js浮点数精确计算(加、减、乘、除)
2013/12/26 Javascript
javascript中Date对象的getDay方法使用指南
2014/12/22 Javascript
基于javascript、ajax、memcache和PHP实现的简易在线聊天室
2015/02/03 Javascript
Node.js环境下编写爬虫爬取维基百科内容的实例分享
2016/06/12 Javascript
js css+html实现简单的日历
2016/07/14 Javascript
基于JavaScript实现点击页面任何位置返回
2016/08/31 Javascript
JS日期对象简单操作(获取当前年份、星期、时间)
2016/10/26 Javascript
详解nodejs微信公众号开发——5.素材管理接口
2017/04/11 NodeJs
详解vue静态资源打包中的坑与解决方案
2018/02/05 Javascript
NodeJs crypto加密制作token的实现代码
2019/11/15 NodeJs
nodejs如何在package.json中设置多条启动命令
2020/03/16 NodeJs
[01:12:44]VG vs Mineski Supermajor 败者组 BO3 第二场 6.6
2018/06/07 DOTA
python 动态获取当前运行的类名和函数名的方法
2014/04/15 Python
python中enumerate函数用法实例分析
2015/05/20 Python
Python实现截屏的函数
2015/07/25 Python
利用Python批量压缩png方法实例(支持过滤个别文件与文件夹)
2017/07/30 Python
python获取酷狗音乐top500的下载地址 MP3格式
2018/04/17 Python
Python线程池模块ThreadPoolExecutor用法分析
2018/12/28 Python
详解pandas的外部数据导入与常用方法
2019/05/01 Python
Python进行统计建模
2020/08/10 Python
联想美国官方商城:Lenovo美国
2017/06/19 全球购物
荷兰网上买鞋:MooieSchoenen.nl
2017/09/12 全球购物
尼克松手表官网:Nixon手表
2019/03/17 全球购物
Holland & Barrett爱尔兰:英国领先的健康零售商
2019/03/31 全球购物
《美丽的小兴安岭》教学反思
2014/02/26 职场文书
小学生植树节活动总结
2014/07/04 职场文书
企业安全生产责任书范本
2014/07/28 职场文书
政风行风评议工作总结
2014/10/21 职场文书
机器人总动员观后感
2015/06/09 职场文书