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 正确解码javascript中通过escape编码后的字符
Jan 28 PHP
JpGraph php柱状图使用介绍
Aug 23 PHP
PHP daddslashes 使用方法介绍
Oct 26 PHP
php启用zlib压缩文件的配置方法
Jun 12 PHP
thinkphp 多表 事务详解
Jun 17 PHP
php生成html文件方法总结
Dec 01 PHP
PHP中的switch语句的用法实例详解
Oct 21 PHP
thinkPHP中验证码的简单使用方法
Dec 26 PHP
php 如何禁用eval() 函数实例详解
Dec 01 PHP
php微信公众平台开发(四)回复功能开发
Dec 06 PHP
laravel config文件配置全局变量的例子
Oct 13 PHP
TP5框架实现一次选择多张图片并预览的方法示例
Apr 04 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 set_time_limit(0) 设置程序执行时间的函数
2010/05/26 PHP
使用php+Ajax实现唯一校验实现代码[简单应用]
2011/11/29 PHP
php的数组与字符串的转换函数整理汇总
2013/07/18 PHP
PHP配置把错误日志以邮件方式发送方法(Windows系统)
2015/06/23 PHP
浅谈PHP拦截器之__set()与__get()的理解与使用方法
2016/10/18 PHP
php中输出json对象的值(实现方法)
2018/03/07 PHP
Mootools 1.2教程 输入过滤第一部分(数字)
2009/09/15 Javascript
Underscore.js常用方法总结
2015/02/28 Javascript
jquery京东商城双11焦点图多图广告特效代码分享
2015/09/06 Javascript
jQuery EasyUI框架中的Datagrid数据表格组件结构详解
2016/06/09 Javascript
HTML5基于Tomcat 7.0实现WebSocket连接并实现简单的实时聊天
2016/10/31 Javascript
Windows下快速搭建NodeJS本地服务器的步骤
2017/08/09 NodeJs
使用pm2自动化部署node项目的方法步骤
2019/01/28 Javascript
微信小程序利用swiper+css实现购物车商品删除功能
2019/03/06 Javascript
jquery图片预览插件实现方法详解
2019/07/18 jQuery
vue.js路由mode配置之去掉url上默认的#方法
2019/11/01 Javascript
关于vue3.0中的this.$router.replace({ path: '/'})刷新无效果问题
2020/01/16 Javascript
原生js实现移动小球(碰撞检测)
2020/12/17 Javascript
python使用cookielib库示例分享
2014/03/03 Python
Python同时向控制台和文件输出日志logging的方法
2015/05/26 Python
Windows中使用wxPython和py2exe开发Python的GUI程序的实例教程
2016/07/11 Python
django站点管理详解
2017/12/12 Python
python 遍历列表提取下标和值的实例
2018/12/25 Python
python解压TAR文件至指定文件夹的实例
2019/06/10 Python
python单例设计模式实现解析
2020/01/07 Python
有趣的Python图片制作之如何用QQ好友头像拼接出里昂
2020/04/22 Python
python3 googletrans超时报错问题及翻译工具优化方案 附源码
2020/12/23 Python
PyCharm常用配置和常用插件(小结)
2021/02/06 Python
详解html5 canvas常用api总结(二)--绘图API
2016/12/14 HTML / CSS
奥地利网上书店:Weltbild
2017/07/14 全球购物
爱岗敬业演讲稿范文
2014/01/14 职场文书
旅游管理毕业生自荐书
2014/02/02 职场文书
改革共识倡议书
2014/08/29 职场文书
群众路线剖析材料(四风问题)
2014/10/08 职场文书
2015年骨干教师工作总结
2015/05/26 职场文书
html2 canvas svg不能识别的解决方案
2021/06/03 HTML / CSS