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实现rc4加密算法代码
Apr 25 PHP
php操作xml
Oct 27 PHP
php的XML文件解释类应用实例
Sep 22 PHP
php实现singleton()单例模式实例
Nov 06 PHP
php去掉文件前几行的方法
Jul 29 PHP
如何使用php脚本给html中引用的js和css路径打上版本号
Nov 18 PHP
PHP目录操作实例总结
Sep 27 PHP
PHP多进程编程实例详解
Jul 19 PHP
PHP判断一个数组是另一个数组子集的方法详解
Jul 31 PHP
基于swoole实现多人聊天室
Jun 14 PHP
php使用redis的有序集合zset实现延迟队列应用示例
Feb 20 PHP
PHP实现考试倒计时功能代码
Apr 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面试题(对属性或方法的访问控制)
2012/09/13 PHP
PHP swfupload图片上传的实例代码
2013/09/30 PHP
PHP有序表查找之插值查找算法示例
2018/02/10 PHP
thinkPHP5框架实现基于ajax的分页功能示例
2018/06/12 PHP
php对微信支付回调处理的方法
2018/08/23 PHP
PHP读取文件或采集时解决中文乱码
2021/03/09 PHP
JavaScript利用append添加元素报错的解决方法
2014/07/01 Javascript
jQuery焦点图切换简易插件制作过程全纪录
2014/08/27 Javascript
node.js中的fs.fstatSync方法使用说明
2014/12/15 Javascript
微信JS-SDK坐标位置如何转换为百度地图坐标
2016/07/04 Javascript
Bootstrap图片轮播组件Carousel使用方法详解
2016/10/20 Javascript
js原生之焦点图转换加定时器实例
2016/12/12 Javascript
简单实现JS倒计时效果
2016/12/23 Javascript
解决Node.js使用MySQL出现connect ECONNREFUSED 127.0.0.1:3306的问题
2017/03/09 Javascript
使用JQuery实现图片轮播效果的实例(推荐)
2017/10/24 jQuery
javaScript产生随机数的用法小结
2018/04/21 Javascript
JS实现模糊查询带下拉匹配效果
2018/06/21 Javascript
详解vue指令与$nextTick 操作DOM的不同之处
2018/08/02 Javascript
vue-cli3.0使用及部分配置详解
2018/08/29 Javascript
详解vue-cli3多环境打包配置
2019/03/28 Javascript
Vue的H5页面唤起支付宝支付功能
2019/04/18 Javascript
python笔记(2)
2012/10/24 Python
Python中threading模块join函数用法实例分析
2015/06/04 Python
python 根据正则表达式提取指定的内容实例详解
2016/12/04 Python
遗传算法python版
2018/03/19 Python
Django 404、500页面全局配置知识点详解
2020/03/10 Python
Django创建一个后台的基本步骤记录
2020/10/02 Python
html5拍照功能实现代码(htm5上传文件)
2013/12/11 HTML / CSS
使用HTML5加载音频和视频的实现代码
2020/11/30 HTML / CSS
护理职业应聘自荐书
2013/09/29 职场文书
临床医学专业毕业生的自我评价
2013/10/17 职场文书
医学院毕业生自荐信
2013/11/08 职场文书
自查自纠工作总结
2014/10/15 职场文书
2014年学校安全工作总结
2014/11/13 职场文书
2015年节能降耗工作总结
2015/05/22 职场文书
Pytest中skip skipif跳过用例详解
2021/06/30 Python