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脚本的10个技巧(2)
Oct 09 PHP
elgg 获取文件图标地址的方法
Mar 20 PHP
php递归创建和删除文件夹的代码小结
Apr 13 PHP
PHP下使用CURL方式POST数据至API接口的代码
Feb 14 PHP
解析php中的escape函数
Jun 29 PHP
php实现数组筛选奇数和偶数示例
Apr 11 PHP
php实现的太平洋时间和北京时间互转的自定义函数分享
Aug 19 PHP
PHP实现货币换算的方法
Nov 29 PHP
PHP中的switch语句的用法实例详解
Oct 21 PHP
PHP处理二进制数据的实现方法
Jun 13 PHP
php计算给定日期所在周的开始日期和结束日期示例
Feb 06 PHP
php的优点总结 php有哪些优点
Jul 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
Yii框架上传图片用法总结
2016/03/28 PHP
php中实现进程锁与多进程的方法
2016/09/18 PHP
PHP搭建大文件切割分块上传功能示例
2017/01/04 PHP
PHP调用Mailgun发送邮件的方法
2017/05/04 PHP
thinkPHP3.2.2框架行为扩展及demo示例
2018/06/19 PHP
Javascript常考语句107条收集
2010/03/09 Javascript
初窥JQuery(一)jquery选择符 必备知识点
2010/11/25 Javascript
js 实现 input type=&quot;file&quot; 文件上传示例代码
2013/08/07 Javascript
javascript闭包的理解
2015/04/01 Javascript
Javascript OOP之面向对象
2016/07/31 Javascript
Bootstrap 网格系统布局详解
2017/03/19 Javascript
Nodejs回调加超时限制两种实现方法
2017/06/09 NodeJs
JS库之Waypoints的用法详解
2017/09/13 Javascript
JS实现DOM删除节点操作示例
2018/04/04 Javascript
vue 实现锚点功能操作
2020/08/10 Javascript
python在windows下实现备份程序实例
2014/07/04 Python
Python实现大文件排序的方法
2015/07/10 Python
Python中Django 后台自定义表单控件
2017/03/28 Python
python3+PyQt5自定义视图详解
2018/04/24 Python
Linux下python3.6.1环境配置教程
2018/09/26 Python
Python除法之传统除法、Floor除法及真除法实例详解
2019/05/23 Python
python 进程间数据共享multiProcess.Manger实现解析
2019/09/23 Python
谈一谈数组拼接tf.concat()和np.concatenate()的区别
2020/02/07 Python
Python3中的f-Strings增强版字符串格式化方法
2020/03/04 Python
小白教你PyCharm从下载到安装再到科学使用PyCharm2020最新激活码
2020/09/25 Python
艺术用品:Arteza
2018/11/25 全球购物
前台接待的工作职责
2013/11/21 职场文书
传媒专业推荐信范文
2013/11/23 职场文书
皮肤科医师岗位职责
2013/12/04 职场文书
企业元宵节主持词
2014/03/25 职场文书
学校校庆演讲稿
2014/05/22 职场文书
就业推荐表导师评语
2014/12/31 职场文书
2015纪念九一八事变84周年演讲稿
2015/03/19 职场文书
2016领导干部廉洁自律心得体会
2016/01/13 职场文书
2019自荐信范文集锦!
2019/07/03 职场文书
详解Java线程池是如何重复利用空闲线程的
2021/06/26 Java/Android