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 相关文章推荐
C# Assembly类访问程序集信息
Jun 13 PHP
PHP分多步骤填写发布信息的简单方法实例代码
Sep 23 PHP
smarty基础之拼接字符串的详解
Jun 18 PHP
php面向对象中的魔术方法中文说明
Mar 04 PHP
ThinkPHP模板判断输出Present标签用法详解
Jun 30 PHP
php访问数组最后一个元素的函数end()用法
Mar 18 PHP
PHP整合PayPal支付
Jun 11 PHP
win10环境PHP 7 安装配置【教程】
May 09 PHP
thinkPHP简单遍历数组方法分析
May 16 PHP
php实现文件与16进制相互转换的方法示例
Feb 16 PHP
Yii1.1中通过Sql查询进行的分页操作方法
Mar 16 PHP
PHP简单实现二维数组赋值与遍历功能示例
Oct 19 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+Mysql+jQuery文件下载次数统计实例讲解
2015/10/10 PHP
PHP简单字符串过滤方法示例
2016/09/04 PHP
PHP xpath()函数讲解
2019/02/11 PHP
php回调函数处理数组操作示例
2020/04/13 PHP
Using the TextRange Object
2006/10/14 Javascript
表单(FORM)的一些实用效果代码
2007/03/25 Javascript
innertext , insertadjacentelement , insertadjacenthtml , insertadjacenttext 等区别
2007/06/29 Javascript
javaScript复制功能调用实现方案
2012/12/13 Javascript
Javascript中string转date示例代码
2013/11/01 Javascript
js获取字符串最后一位方法汇总
2014/11/13 Javascript
JavaScript数组合并的多种方法
2016/05/22 Javascript
JS获取子窗口中返回的数据实现方法
2016/05/28 Javascript
JS使用cookie实现只出现一次的广告代码效果
2017/04/22 Javascript
jQuery滑动到底部加载下一页数据的实例代码
2017/05/22 jQuery
微信小程序-滚动消息通知的实例代码
2017/08/03 Javascript
详解JavaScript函数callee、call、apply的区别
2019/03/08 Javascript
详解jQuery中的getAll()和cleanData()
2019/04/15 jQuery
详解如何给React-Router添加路由页面切换时的过渡动画
2019/04/25 Javascript
微信小程序实现分享商品海报功能
2019/09/30 Javascript
JavaScript大数相加相乘的实现方法实例
2020/10/18 Javascript
python使用knn实现特征向量分类
2018/12/26 Python
Python/Django后端使用PIL Image生成头像缩略图
2019/04/30 Python
django组合搜索实现过程详解(附代码)
2019/08/06 Python
docker-py 用Python调用Docker接口的方法
2019/08/30 Python
使用Python实现正态分布、正态分布采样
2019/11/20 Python
python 微信好友特征数据分析及可视化
2020/01/07 Python
Python如何使用内置库matplotlib绘制折线图
2020/02/24 Python
Python使用sys.exc_info()方法获取异常信息
2020/07/23 Python
澳大利亚鞋仓库:Shoe Warehouse
2019/07/25 全球购物
C#如何允许一个类被继承但是避免这个类的方法被重载?
2015/02/24 面试题
银行出纳岗位职责
2013/11/25 职场文书
高中学生评语大全
2014/04/25 职场文书
抗洪抢险事迹材料
2014/05/06 职场文书
农村结婚典礼主持词
2015/06/29 职场文书
五年级数学教学反思
2016/02/16 职场文书
Nginx+Tomcat负载均衡集群的实现示例
2021/10/24 Servers