> 웹 프론트엔드 > JS 튜토리얼 > JavaScript 시뮬레이션 Ping 효과 코드(Web Ping)_javascript 기술

JavaScript 시뮬레이션 Ping 효과 코드(Web Ping)_javascript 기술

WBOY
풀어 주다: 2016-05-16 18:09:32
원래의
2004명이 탐색했습니다.

물론 요청 중에는 HTTP 헤더의 길이를 계산할 수 없으므로 요청 패킷 길이가 최대 전송 단위의 임계점에 도달하면 추가 HTTP 헤더로 인해 IP 패킷이 발생할 수 있으므로 특정 오류가 있습니다. /6/21)

온라인 데모: http://demo.jb51.net/js/2011/ping/

핵심 코드:

코드 복사 코드는 다음과 같습니다.



<머리>

HTTP Ping
<스타일>
html
{
높이: 100%;
오버플로: 숨김;
}
본문
{
배경: #000;
색상: #C0C0C0;
글꼴 두께: 굵게;
글꼴 크기: 14px;
글꼴군: Lucida Console;
높이: 100%;
여백: 0 0 0 5px;
}
#divContent
{
높이: 90%;
오버플로: 자동;
}
#txtTimeout
{
너비: 40px;
}
버튼
{
여백-왼쪽: 10px;
}


<본문>

URL:

시간 초과:


<시간/>


<스크립트>
var intStartTime;
var objIMG = 새 이미지();
objIMG.onload =
objIMG.onerror =
function()
{
/*
* 有回应,取消超时计时
*/
clearTimeout(intTimerID );
if(!bolIsRunning || bolIsTimeout)
return;
var Delay = new Date() - intStartTime;
println(""
strURL
" 시간의 응답"
((delay<1)?("<1"):("="delay))
"ms" );
arrDelays.push(지연);
/*
* 每次请求间隔限system 1秒以上
*/
setTimeout(ping, Delay<1000?(1000-delay):1000);
}
function ping()
{
/*
* 发送请求
*/
intStartTime = new Date();
intSent ;
objIMG.src = strURL "/" intStartTime;
bolIsTimeout = false;
/*
* 超时计时
*/
intTimerID = setTimeout(timeout, intTimeout);
}
함수 timeout()
{
if(!bolIsRunning)
return;
bolIsTimeout = true;
objIMG.src = "X:\";
println("요청 시간이 초과되었습니다.");
핑();
}

<스크립트>
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 handlerBtnClick()
{
if(bolIsRunning)
{
/*
* 停止
*/
var intRecv = arrDelays.length;
var intLost = intSent-intRecv;
var sum = 0;
for(var i=0; isum = arrDelays[i];
objBtn.value = "시작";
bolIsRunning = false;
/*
* 统计结果
*/
println(" ");
println("" strURL "에 대한 핑 통계:");
println("  Packets: Sent = "
intSent
", Receivered = "
intRecv
", Lost = "
intLost
" ("
Math. Floor(intLost / intSent * 100)
"% 손실),");
if(intRecv == 0)
return;
println("밀리초 단위의 대략적인 왕복 시간:");
println("  Minimum = "
Math.min.apply(this, arrDelays)
"ms, Maximum = "
Math.max.apply(this, arrDelays)
"ms, 평균 = "
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 = parsInt($("txtTimeout").value, 10);
if(isNaN(intTimeout))
intTimeout = 2000;
if(intTimeout < 1000)
intTimeout = 1000;
objBtn.value = "중지";
bolIsRunning = true;
arrDelays = [];
intSent = 0;
cls();
println("핑 " strURL ":");
println(" ");
핑();
}
}
function println(str)
{
var objDIV = document.createElement("div");
if(objDIV.innerText != null)
objDIV.innerText = str;
그 외
objDIV.textContent = str;
objContent.appendChild(objDIV);
objContent.scrollTop = objContent.scrollHeight;
}
함수 cls()
{
objContent.innerHTML = "";
}



관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿