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比较多维数组中值的大小排序实现代码
Sep 08 PHP
关于shopex同步ucenter的redirect问题,导致script不运行
Apr 10 PHP
探讨PHP删除文件夹的三种方法
Jun 09 PHP
ThinkPHP3.1新特性之动态设置自动完成及自动验证示例代码
Jun 23 PHP
Linux中为php配置伪静态
Dec 17 PHP
PHP查看当前变量类型的方法
Jul 31 PHP
PHP中ltrim与rtrim去除左右空格及特殊字符实例
Jan 07 PHP
浅谈php中的访问修饰符private、protected、public的作用范围
Nov 20 PHP
thinkPHP5.0框架自动加载机制分析
Mar 18 PHP
PHP守护进程化在C和PHP环境下的实现
Nov 21 PHP
laravel 解决路由除了根目录其他都404的问题
Oct 18 PHP
PHP连接MySQL数据库的三种方式实例分析【mysql、mysqli、pdo】
Nov 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
Terran建筑一览
2020/03/14 星际争霸
php实现的CSS更新类实例
2014/09/22 PHP
php常用字符串处理函数实例分析
2014/11/22 PHP
php返回当前日期或者指定日期是周几
2015/05/21 PHP
PHP数组中头部和尾部添加元素的方法(array_unshift,array_push)
2017/04/10 PHP
PHP简单实现循环链表功能示例
2017/11/10 PHP
PHP实现链式操作的三种方法详解
2017/11/16 PHP
PHP MVC框架中类的自动加载机制实例分析
2019/09/18 PHP
javascript获取下拉列表框当中的文本值示例代码
2013/07/31 Javascript
JavaScript制作的可折叠弹出式菜单示例
2014/04/04 Javascript
JavaScript在Android的WebView中parseInt函数转换不正确问题解决方法
2015/04/25 Javascript
Javascript中prototype属性实现给内置对象添加新的方法
2015/05/14 Javascript
微信小程序封装http访问网络库实例代码
2017/05/24 Javascript
JavaScript实现短暂提示框功能
2018/04/04 Javascript
vue-cli 组件的导入与使用教程详解
2018/04/11 Javascript
详解JavaScript 新语法之Class 的私有属性与私有方法
2019/04/23 Javascript
Angular5整合富文本编辑器TinyMCE的方法(汉化+上传)
2020/05/26 Javascript
深入理解Python中的内置常量
2017/05/20 Python
浅谈python和C语言混编的几种方式(推荐)
2017/09/27 Python
Python基于百度AI的文字识别的示例
2018/04/21 Python
Python 实现字符串中指定位置插入一个字符
2018/05/02 Python
python3.6根据m3u8下载mp4视频
2019/06/17 Python
python程序 线程队列queue使用方法解析
2019/09/23 Python
Django 解决distinct无法去除重复数据的问题
2020/05/20 Python
Python 列表中的修改、添加和删除元素的实现
2020/06/11 Python
美国婴儿用品及配件购买网站:Munchkin
2019/04/03 全球购物
公司同意接收函
2014/01/13 职场文书
区优秀教师事迹材料
2014/02/10 职场文书
通用自荐信范文
2014/03/14 职场文书
业务员的岗位职责
2014/03/15 职场文书
村委会换届选举方案
2014/05/03 职场文书
祖国在我心中演讲稿600字
2014/09/23 职场文书
寒暑假实习证明书模板
2014/11/29 职场文书
2015年护士工作总结范文
2015/03/31 职场文书
2015年挂职干部工作总结
2015/05/14 职场文书
2016年度先进班组事迹材料
2016/03/01 职场文书