zoukankan      html  css  js  c++  java
  • JavaScript实现ping

    <!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 {
    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>
  • 相关阅读:
    *Server对象的URLEncode方法的详细介绍 *
    *Server对象的方法简单介绍*
    *SQLDB中图片的读取并显示*
    *关于DataBinder.Eval*
    SQLMaps 的基本思想
    *DropdownList的数据绑定*
    面向对象的一些思想
    [zz]NoSQL对比:Cassandra vs MongoDB vs CouchDB vs Redis vs Riak vs HBase vs Membase vs Neo4j
    [zz]HDFS文件读写 使用c api
    [zz]linux patch 简单使用速查
  • 原文地址:https://www.cnblogs.com/sky7034/p/2051737.html
Copyright © 2011-2022 走看看