用jquery实现Ping测试网络连接性

jquery的ping插件://要用的需要明白代码及自己改些地方

(function($) {
    $.fn.ping = function(options) {
        var opts = $.extend({}, $.fn.ping.defaults, options);
        var stime = new Date().getTime(); 
        return this.each(function() {
            var ping, requestTime, responseTime ;
            var target = $(this);
            function ping(){
                $.ajax({url: opts.getUrl(target.html())+‘/‘+ Math.random() + ‘.html‘,  //设置一个空的ajax请求
                    type: opts.type,
                    dataType: ‘html‘,
                    timeout: opts.timeout,
                    beforeSend : function() {
                        requestTime = new Date().getTime();
                    },
                    complete : function() {
                        responseTime = new Date().getTime();
                        ping = Math.abs(requestTime - responseTime);
                        $(‘#‘+target.html().replace(‘.‘,‘_‘)).text(ping + opts.unit);
                        //target.text(ping + opts.unit);
                    }
                });
            }
            var etime = new Date().getTime();
            if(Math.abs(stime - etime)<opts.timeout){
                ping();  //无论如何都要执行一次
                opts.interval != 0 && setInterval(ping,opts.interval * 1000);
            }
        });
    };
    $.fn.ping.defaults = {
        type: ‘GET‘,
        timeout: 10000,
        interval: 3,
        unit: ‘ms‘,
        isUrl:function(url){    //验证url是否有效
           var strReg = "^((https|http)?://)?" 
            + "(([0-9]{1,3}.){3}[0-9]{1,3}" // 
            + "|" // 
            + "([0-9a-z_!~*‘()-]+.)*" // 
            + "([0-9a-z][0-9a-z-]{0,61})?[0-9a-z]." // 
            + "[a-z]{2,6})" // 
            + "(:[0-9]{1,4})?" // 
            + "((/?)|" // 
            + "(/[0-9a-z_!~*‘().;?:@&=+$,%#-]+)+/?)$"; 
            var re=new RegExp(strReg); 
            return re.test(url);
           },
        getUrl:function(url){    //保证url带http://
            var strReg="^((https|http)?://){1}"
            var re=new RegExp(strReg); 
            return re.test(url)?url:"http://"+url;
        }
    };
})(jQuery);

js ping url:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>HTTP Ping</title>
<style>
html{height: 100%;overflow: hidden;}
body{background: #000;color: #C0C0C0;font-weight: bold;font-size: 14px;font-family: Lucida Console;height: 100%;margin: 0 0 0 5px;}
#divInput{height: 10%;}
#divContent{height: 90%;overflow: auto;}
#txtTimeout{width: 40px;}
button{    margin-left: 10px;}
</style>
</head>
<body>
<div id="divInput">
    <span>URL:</span>
    <input id="txtURL" type="text" />
    <span>Timeout:</span>
    <input id="txtTimeout" type="text" value="2000" />
    <input id="btnSwitch" type="button" value="Start" onclick="handleBtnClick()" />
    <hr/>
</div>
<div id="divContent"></div>
<script>
var intStartTime;
var objIMG = new Image();
objIMG.onload =
objIMG.onerror = 
function(){
    /*
     * 有回应,取消超时计时
     */
    clearTimeout(intTimerID);
    if(!bolIsRunning || bolIsTimeout)
        return;
    var delay = new Date() - intStartTime;
    println("Reply from " +
            strURL +
            " time" +
            ((delay<1)?("<1"):("="+delay)) +
            "ms");
    arrDelays.push(delay);
    /*
     * 每次请求间隔限制在1秒以上
     */
    setTimeout(ping, delay<1000?(1000-delay):1000);
}
function ping(){
    /*
     * 发送请求
     */
    intStartTime = +new Date();
    intSent++;
    objIMG.src = strURL + "/" + intStartTime;
    bolIsTimeout = false;
    /*
     * 超时计时
     */
    intTimerID = setTimeout(timeout, intTimeout);
}
function timeout(){
    if(!bolIsRunning)
        return;
    bolIsTimeout = true;
    objIMG.src = "X:\\";
    println("Request timed out.");
    ping();
}
</script>
<script>
var $ = function(v){return document.getElementById(v)};
var arrDelays = [];
var intSent;
var bolIsRunning = false;
var bolIsTimeout;
var strURL;
var intTimeout;
var intTimerID;
var objBtn = $("btnSwitch");
var objContent = $("divContent");
var objTxtURL = $("txtURL");
objTxtURL.value = window.location.host;
function handleBtnClick(){
    if(bolIsRunning){
        /*
         * 停止
         */
        var intRecv = arrDelays.length;
        var intLost = intSent-intRecv;
        var sum = 0;
        for(var i=0; i<intRecv; i++)
            sum += arrDelays[i];
        objBtn.value = "Start";
        bolIsRunning = false;
        /*
         * 统计结果
         */
        println(" ");
        println("Ping statistics for " + strURL + ":");
        println("  Packets: Sent = " +
                intSent +
                ", Received = " +
                intRecv +
                ", Lost = " +
                intLost +
                " (" +
                Math.floor(intLost / intSent * 100) +
                "% loss),");
        if(intRecv == 0)
            return;
        println("Approximate round trip times in milli-seconds:");
        println("  Minimum = " +
                Math.min.apply(this, arrDelays) +
                "ms, Maximum = " +
                Math.max.apply(this, arrDelays) +
                "ms, Average = " +
                Math.floor(sum/intRecv) +
                "ms");
    }else{
        /*
         * 开始
         */
        strURL = objTxtURL.value;
        if(strURL.length == 0)
            return;
        if(strURL.substring(0,7).toLowerCase() != "http://")
            strURL = "http://" + strURL;
        intTimeout = parseInt($("txtTimeout").value, 10);
        if(isNaN(intTimeout))
            intTimeout = 2000;
        if(intTimeout < 1000)
            intTimeout = 1000;
        objBtn.value = "Stop ";
        bolIsRunning = true;
        arrDelays = [];
        intSent = 0;
        cls();
        println("Pinging " + strURL + ":");
        println(" ");
        ping();
    }
}
function println(str){
    var objDIV = document.createElement("div");
    if(objDIV.innerText != null)
        objDIV.innerText = str;
    else
        objDIV.textContent = str;
    objContent.appendChild(objDIV);
    objContent.scrollTop = objContent.scrollHeight;
}
function cls(){
    objContent.innerHTML = "";
}
</script>
</body>
</html>

原文地址:https://www.cnblogs.com/mxjmxj/p/12085143.html

时间: 2024-10-12 11:40:16

用jquery实现Ping测试网络连接性的相关文章

ping 测试网络上正在活动的主机 sh脚本

代码如下: #!/bin/bash for ip in 192.168.2.{100..150}; do ( ping $ip -c 2 &> /dev/null; if [ $? -eq 0 ]; then echo $ip is alive fi )& done wait 此脚本用于测试宿舍网络活动的主机 宿舍内网络环境为腾达的一个无线路由搭建 测试地址池范围指定为100~150 脚本采用并行处理,减少时间 执行效果: 注 : 此时共有5台电脑.4台无线设备在线.与实验吻合.

使用Ping测试网络连通状态

public bool IsPingOk { get { try { Ping ping = new Ping(); string ipaddress = this.GetIP(AppConfig.AddrHisService); PingReply pr = ping.Send(ipaddress); if (pr.Status == IPStatus.Success) return true; else return false; } catch { return false; } } }

(转)用C#实现实现简单的 Ping 的功能,用于测试网络是否已经连通

本文转载自:http://blog.csdn.net/xiamin/archive/2009/02/14/3889696.aspx 用C#实现实现简单的 Ping 的功能,用于测试网络是否已经联通 1. 根据IP地址获得主机名称 /// <summary> /// 根据IP地址获得主机名称 /// </summary> /// <param name="ip">主机的IP地址</param> /// <returns>主机名称

Java测试网络连通性

第一种方式:利用java运行时: Java代码   /** * test network * @param ip */ private void getNetworkState(String ip) { Runtime runtime = Runtime.getRuntime(); try { log.info("=================正在测试网络连通性ip:"+ip); Process process = runtime.exec("ping " +i

Fedora 24 Gnome Boxes 无法ping通网络

安装Fedora 24在试用虚拟机时发现无法ping通外网. 我傻傻地以为是软件问题. 问题描述: 尝试ping程序来测试网络连通性: (我之前也是ping百度,后来在为了少打字百度了一些比较短的域名. 比如: "to." , "g.cn" , "j.mp" 等等.) (http://wenku.baidu.com/link?url=oSb0I5xzI1UBhU3aKTXoWll7PYaIm0zNiORJbx_h6PlT-bURWFOCXkW9W

使用iperf测试网络性能

iperf 是一个 TCP/IP 和 UDP/IP 的性能测量工具,能够提供网络吞吐率信息,以及震动.丢包率.最大段和最大传输单元大小等统计信息:从而能够帮助我们测试网络性能,定位网络瓶颈.iperf是开源的,源代码可以从http://sourceforge.net/projects/iperf/下载. 1.    iperf能够做什么 提起iperf,想必大家都知道它是用了测试网络性能的.具体说来,Iperf是美国伊利诺斯大学(University of Illinois)开发的一种开源的网络

测试网络连通情况

//测试网络状态 Ping p = new Ping(); string pAddr = ConfigurationManager.AppSettings["pingAddr"]; //创建Ping对象p PingReply pr; pAddr = "www.baidu.com"; Console.WriteLine("Ping:" +pAddr ); int lost = 0; //丢包数 long rtt = 0; //ping回复时间 fo

查看及测试网络

1.查看网络配置 1)ifconfig   查看网络接口地址:lo 为回环网络接口,测试本地网卡用 2)hostname   查看主机名称 3)route   查看路由条目 4)route -n 可以将记录中的地址显示为数字形式 5)netstat   查看网络连接状态landuo -a   显示当前主机所有活动的网络连接信息 -n   以数字的形式显示相关的主机地址,端口等信息 -r   显示路由表信息 -l   显示处于监听(listening)状态的网络连接及端口信息 -t   查看tcp

如何配置IP地址及网段,如何测试网络连通,如何通过NUC路径访问

这篇跟大家分享一点知识内容,这一篇总共三个内容.内容一:配置IP地址及网段内容二:测试网络的连通内容三:通过unc路径访问 我们在这之前要准备一个虚拟机然后打开两台win10虚拟客户机(我用的是server服务器跟win10,这并没有差别)具体步骤如下:内容一 我们保证两台虚拟机的网段是同一个网段,在虚拟机的右下角点开小电脑图标,进入配置界面然后选自定义随便选择一个网段(但是两个虚拟机的网段要相同)另一台虚拟机也是一样的配置网段,然后确定配置网段完毕后我们在桌面上点击鼠标右键打开网络图标属性,点