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设计模式之命令模式的深入解析
Jun 13 PHP
解析PHP实现多进程并行执行脚本
Jun 18 PHP
thinkphp的c方法使用示例
Feb 24 PHP
PHP解码unicode编码的中文字符代码分享
Aug 13 PHP
PHP安装memcached扩展笔记
May 28 PHP
[原创]ThinkPHP让../Public在模板不解析(直接输出)的方法
Oct 09 PHP
PHP函数func_num_args用法实例分析
Dec 07 PHP
py文件转exe时包含paramiko模块出错解决方法
Aug 12 PHP
PHP在innodb引擎下快速代建全文搜索功能简明教程【基于xunsearch】
Oct 14 PHP
关于PHP中字符串与多进制转换函数的实例代码
Nov 03 PHP
thinkphp实现分页显示功能
Dec 03 PHP
PHP的介绍以及优势详细分析
Sep 05 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与XML、XSLT、Mysql的结合运用实现代码
2009/11/19 PHP
PHP获取日期对应星期、一周日期、星期开始与结束日期的方法
2018/06/22 PHP
PHP让网站移动访问更加友好方法
2019/02/14 PHP
laravel在中间件内生成参数并且传递到控制器中的2种姿势
2019/10/15 PHP
PHP实现二维数组(或多维数组)转换成一维数组的常见方法总结
2019/12/04 PHP
ExtJS 2.0实用简明教程 之Ext类库简介
2009/04/29 Javascript
Javascript中的变量使用说明
2010/05/18 Javascript
兼容IE与firefox火狐的回车事件(js与jquery)
2010/10/20 Javascript
jQuery1.5.1 animate方法源码阅读
2011/04/05 Javascript
原生js做的手风琴效果的导航菜单
2013/11/08 Javascript
js简单的表格添加行和删除行操作示例
2014/03/31 Javascript
js数组与字符串的相互转换方法
2014/07/09 Javascript
jQuery实现分章节锚点“回到顶部”动画特效代码
2015/10/23 Javascript
在Linux系统中搭建Node.js开发环境的简单步骤讲解
2016/01/26 Javascript
WEB 前端开发中防治重复提交的实现方法
2016/10/26 Javascript
详解ECharts使用心得总结
2016/12/06 Javascript
Angularjs的$http异步删除数据详解及实例
2017/07/27 Javascript
vue中七牛插件使用的实例代码
2017/07/28 Javascript
小程序开发中如何使用async-await并封装公共异步请求的方法
2019/01/20 Javascript
vue悬浮可拖拽悬浮按钮的实例代码
2019/08/20 Javascript
js验证密码强度解析
2020/03/18 Javascript
vue 数据遍历筛选 过滤 排序的应用操作
2020/11/17 Javascript
[39:19]完美世界DOTA2联赛PWL S2 SZ vs LBZS 第二场 11.26
2020/11/30 DOTA
python实现获取客户机上指定文件并传输到服务器的方法
2015/03/16 Python
python3实现基于用户的协同过滤
2018/05/31 Python
详解Django中间件的5种自定义方法
2018/07/26 Python
python 在指定范围内随机生成不重复的n个数实例
2019/01/28 Python
Python调用Windows API函数编写录音机和音乐播放器功能
2020/01/05 Python
django数据模型中null和blank的区别说明
2020/09/02 Python
商务英语求职自荐信范文
2013/12/24 职场文书
违反工作纪律检讨书
2014/02/15 职场文书
妇女儿童发展规划实施方案
2014/03/16 职场文书
售后服务承诺书
2014/03/26 职场文书
2015年班级工作总结范文
2015/04/03 职场文书
优质护理心得体会
2016/01/22 职场文书
Python如何配置环境变量详解
2021/05/18 Python