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通用分页类page.php[仿google分页]
Aug 31 PHP
PHP利用func_get_args和func_num_args函数实现函数重载实例
Nov 12 PHP
腾讯微博提示missing parameter errorcode 102 错误的解决方法
Dec 22 PHP
php堆排序实现原理与应用方法
Jan 03 PHP
Thinkphp3.2.3整合phpqrcode生成带logo的二维码
Jul 21 PHP
PHP+Apache+Mysql环境搭建教程
Aug 01 PHP
php中strlen和mb_strlen用法实例分析
Nov 12 PHP
10个值得深思的PHP面试题
Nov 14 PHP
PHP递归遍历指定文件夹内的文件实现方法
Nov 15 PHP
PHP与Perl之间知识点区别整理
Mar 19 PHP
Yii2框架中一些折磨人的坑
Dec 15 PHP
PHP常用header头定义代码示例汇总
Aug 29 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和js交互一例-PHP教程,PHP应用
2007/01/03 PHP
javascript 写类方式之五
2009/07/05 Javascript
JavaScript 三种不同位置代码的写法
2009/10/25 Javascript
元素的内联事件处理函数的特殊作用域在各浏览器中存在差异
2011/01/12 Javascript
jQuery 对Select的操作备忘记录
2011/07/04 Javascript
基于Jquery的文字自动截取(提供源代码)
2011/08/09 Javascript
基于jquery的loading 加载提示效果实现代码
2011/09/01 Javascript
javascript表单验证 - Parsley.js使用和配置
2013/01/25 Javascript
javascript实现分栏显示小技巧附图
2014/10/13 Javascript
JavaScript设计模式之抽象工厂模式介绍
2014/12/28 Javascript
概述jQuery的元素筛选
2016/11/23 Javascript
详解js的延迟对象、跨域、模板引擎、弹出层、AJAX【附实例下载】
2016/12/19 Javascript
JavaScript中利用构造器函数模拟类的方法
2017/02/16 Javascript
vue.js中过滤器的使用教程
2017/06/08 Javascript
微信小程序之页面跳转和参数传递的实现
2017/09/29 Javascript
详解VUE 数组更新
2017/12/16 Javascript
在 webpack 中使用 ECharts的实例详解
2018/02/05 Javascript
JS实现的合并多个数组去重算法示例
2018/04/11 Javascript
Vue.js单向绑定和双向绑定实例分析
2018/08/14 Javascript
分享5个顶级的JavaScript Ajax组件库
2018/09/16 Javascript
JS实现的全选、全不选及反选功能【案例】
2019/02/19 Javascript
ES6 Symbol数据类型的应用实例分析
2019/06/26 Javascript
Vue.js的模板语法详解
2020/02/16 Javascript
Javascript前端下载后台传来的文件流代码实例
2020/08/18 Javascript
vue $mount 和 el的区别说明
2020/09/11 Javascript
[34:08]2018DOTA2亚洲邀请赛3月29日 小组赛B组 VP VS EG
2018/03/30 DOTA
[54:45]2018DOTA2亚洲邀请赛 4.1 小组赛 A组 Optic vs OG
2018/04/02 DOTA
[02:33]2018DOTA2亚洲邀请赛赛前采访——LGD
2018/04/04 DOTA
将python运行结果保存至本地文件中的示例讲解
2019/07/11 Python
python使用装饰器作日志处理的方法
2019/07/11 Python
Python包,__init__.py功能与用法分析
2020/01/07 Python
tensorboard 可以显示graph,却不能显示scalar的解决方式
2020/02/15 Python
html5+svg学习指南之SVG基础知识
2014/12/17 HTML / CSS
副职竞争上岗演讲稿
2014/05/12 职场文书
农村文化建设标语
2014/10/07 职场文书
银行开户授权委托书格式
2014/10/10 职场文书