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批量生成缩略图的代码
Jul 19 PHP
用php随机生成福彩双色球号码的2种方法
Feb 04 PHP
解析如何去掉CodeIgniter URL中的index.php
Jun 25 PHP
PHP与javascript实现变量交互的示例代码
Jul 23 PHP
php使用fgetcsv读取csv文件出现乱码的解决方法
Nov 08 PHP
PHP中strtr字符串替换用法详解
Nov 26 PHP
ThinkPHP模版引擎之变量输出详解
Dec 05 PHP
javascript数组与php数组的地址传递及值传递用法实例
Jan 22 PHP
PHP获取音频文件的相关信息
Jun 22 PHP
PHP实现的二分查找算法实例分析
Dec 19 PHP
总结PHP代码规范、流程规范、git规范
Jun 18 PHP
ThinkPHP5分页paginate代码实例解析
Nov 10 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执行linux系统命令的常用函数使用说明
2010/04/27 PHP
Zend Studio去除编辑器的语法警告设置方法
2012/10/24 PHP
php5.5中类级别的常量使用介绍
2013/10/02 PHP
实现PHP多线程异步请求的3种方法
2014/01/17 PHP
Smarty分页实现方法完整实例
2016/05/11 PHP
PHP 读取大文件并显示的简单实例(推荐)
2016/08/12 PHP
php7安装yar扩展的方法详解
2017/08/03 PHP
Laravel 实现密码重置功能
2018/02/23 PHP
Jquery插件之多图片异步上传
2010/10/20 Javascript
Flexigrid在IE下不显示数据的处理的解决方法
2013/10/24 Javascript
js文件包含的几种方式介绍
2014/09/28 Javascript
Node.js连接postgreSQL并进行数据操作
2016/12/18 Javascript
基于Node的React图片上传组件实现实例代码
2017/05/10 Javascript
AngularJS页面带参跳转及参数解析操作示例
2017/06/28 Javascript
laydate 显示结束时间不小于开始时间的实例
2017/08/11 Javascript
详解如何在vue项目中引入elementUI组件
2018/02/11 Javascript
详解Vue单元测试case写法
2018/05/24 Javascript
简单的React SSR服务器渲染实现
2018/12/11 Javascript
vue.js实现双击放大预览功能
2020/06/23 Javascript
[07:31]DOTA2卡尔工作室 英雄介绍主宰篇
2013/06/25 DOTA
在Python中使用AOP实现Redis缓存示例
2017/07/11 Python
python+pygame简单画板实现代码实例
2017/12/13 Python
Pycharm无法显示动态图片的解决方法
2018/10/28 Python
Python字符串的全排列算法实例详解
2019/01/07 Python
Python unittest如何生成HTMLTestRunner模块
2020/09/08 Python
大学生职业生涯规划方案
2014/01/03 职场文书
环保志愿者活动总结
2014/06/27 职场文书
意外伤害赔偿协议书范文
2014/09/23 职场文书
三严三实对照检查材料范文
2014/09/23 职场文书
2015年党性分析材料
2014/12/19 职场文书
2016年大学生暑期社会实践活动总结
2016/04/06 职场文书
北京大学中文系教授推荐的10本小说
2019/08/08 职场文书
如何用python绘制雷达图
2021/04/24 Python
C站最全Python标准库总结,你想要的都在这里
2021/07/03 Python
Python卷积神经网络图片分类框架详解分析
2021/11/07 Python
Python使用openpyxl模块处理Excel文件
2022/06/05 Python