`
liubingjun
  • 浏览: 21739 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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 {
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>


可以直接运行。
0
0
分享到:
评论

相关推荐

    纯Javascript实现ping功能的方法

    本文主要介绍了一种使用纯JavaScript实现类似ping功能的方法。 首先,我们需要了解该方法并不是真正意义上的ping操作,因为浏览器环境的限制,我们不能直接发送ICMP请求。但我们可以采用一种变通的方式,通过发送...

    web页面实现ping 命令

    在网页上实现ping命令,通常需要使用JavaScript或者WebAssembly技术,通过浏览器的`fetch` API或WebSocket发送TCP或UDP请求模拟ICMP的行为。因为浏览器的安全限制,直接发送ICMP报文是不可能的,但可以通过...

    javascript模拟的Ping效果代码 (Web Ping)

    接下来,我们来分析给定文件中所提供的JavaScript代码实现Web Ping的核心逻辑: 1. 页面布局和样式设置: 页面通过HTML和CSS定义了用户输入URL和超时时间的输入框、开始测试的按钮,以及用于显示测试结果的区域。...

    ping:检测客户端信息

    在提供的压缩包文件名"ping-master"中,我们可以推测这是一个关于JavaScript实现ping功能的项目仓库。通常,这样的项目会包含一个或多个JavaScript文件,其中可能包含实现ping检测功能的代码,以及可能的示例、测试...

    JavaScript模拟的HTTP Ping 效果

    在请求时无法统计HTTP头部的长度,所以当请求数据包长度在最大传输单元临界点时,额外的HTTP头可以导致IP分组,因此存在一定的误差,但Ping的本质仍然是请求/回复的时间差,HTTP自然可以实现此功能。

    php写的网站ping值测试

    本项目以PHP作为后端语言,结合Ajax技术实现了一个简单的网站ping值测试。 首先,PHP是Hypertext Preprocessor的缩写,是一种广泛使用的开源服务器端脚本语言,尤其适合Web开发。在这个项目中,PHP作为后端处理程序...

    Ping Pong Game using JavaScript with Source Code.zip

    《JavaScript实现的乒乓游戏详解及源代码分析》 在当今的Web开发领域,JavaScript作为最常用的客户端编程语言,被广泛应用于各种动态交互效果的实现。本篇文章将详细讲解如何使用JavaScript构建一个简单的“乒乓...

    pingpong-nodejs:Databus乒乓示例的Javascript实现

    该存储库包含用于构建以Javascript实现的Databus Ping Pong应用程序示例的源文件。 请参阅以获取有关此应用程序示例的更多信息。 概述 node:10.16.3-alpine Ping Pong应用程序示例的此实现使用node:10.16.3-alpine...

    jsp.zip_5RS9_JS前端ping源码_feedkxh_jsp ping_前端用jsp

    标题中的"jsp.zip_5RS9_JS前端ping源码_feedkxh_jsp ping_前端用jsp"揭示了这是一个关于JavaScript(JS)前端实现的网络Ping功能,利用JSP(JavaServer Pages)技术进行辅助。这个项目可能包含了前端的HTML页面...

    在线ping代码(asp.net c#)

    `ping.aspx`是ASP.NET Web Form的前端页面,通常包含HTML、CSS和一些客户端脚本(如JavaScript),用于展示用户界面,接收用户输入,并显示ping结果。用户在该页面上输入待ping的目标地址,然后点击一个按钮触发ping...

    ping测试源码(仅IE)

    其中,JavaScript 负责嵌入 Flash 内容以实现 Ping 功能。 #### 2.2 HTML 结构解析 HTML 部分主要是页面布局结构: - `&lt;div class="main"&gt;`:主容器。 - `&lt;div id="b_1"&gt;`:内容容器。 - `;"&gt;`:用于显示 Ping 指令...

    前端项目-aping.zip

    在IT行业中,前端开发是构建Web应用程序不可或缺的一部分,它涉及到用户与网站互动的界面设计和实现。本项目名为"aping",是一个基于AngularJS的指令系统,专为数据处理和展示而设计。AngularJS,由Google维护,是一...

    ping4j 汉字转英文控件

    在demo.html中引入jQuery可能是因为ping4j控件使用了jQuery进行DOM操作或实现动态效果。 3. **demo.PNG** - 这可能是一个截图,展示了ping4j控件在实际应用中的外观或使用效果,帮助开发者理解其工作原理和界面反馈...

    ping++需要的jar包和js脚本文件

    - JavaScript脚本文件是前端开发中的重要组成部分,用于实现客户端的功能。在ping++的上下文中,js脚本文件可能包含ping++的JavaScript SDK,这些脚本在用户的浏览器中运行,提供了用户界面的交互,如显示支付...

    Laravel开发-ping

    在"ping-master"这个压缩包中,可能包含了实现上述功能的源代码、配置文件、示例和文档。开发者在使用这个包时,需要按照提供的文档安装、配置,并可能需要自定义部分功能以适应特定的应用场景。在实际开发过程中,...

    ping页面正版ping页面正版.rar

    如果是文件夹,那么它可能包含CSS样式表、JavaScript文件以及图像等资源,共同构成了完整的"ping页面"。 综上所述,"ping页面正版"是一个官方认可的网络诊断工具,通过HTTP/HTTPS协议实现,提供类似于传统ping命令...

    酷QICP备案Ping查询_机器人_ping_查询备案_酷Qping_酷Q_

    本文将详细探讨如何在酷Q机器人平台上实现ping命令和查询网站备案的功能。 首先,"酷Q"是一款国内知名的QQ机器人开发框架,它允许用户通过编写插件或脚本来扩展其功能,以满足各种自动化需求。酷Q提供了丰富的API...

    PingClient.zip_PingClient_ping

    - cs文件是C#源代码文件,其中包含了实现ping客户端功能的代码。 - vb文件可能是Visual Basic代码,虽然标题和描述中只提到了C#,但也有可能这个文件包含了一些辅助性的VB代码,或者是一个替代的实现版本。 总的来...

Global site tag (gtag.js) - Google Analytics