js模擬ping程序(計算機網路ping程序實現)

本文目錄一覽:

使用jquery插件測試url鏈接是否有效及js ping url

要用的需要明白代碼及自己改些地方

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

node.js怎麼調用ping

let ping = require(‘child_process’).spawn(‘ping’,[‘127.0.0.1’]);

let iconv = require(‘iconv-lite’);

ping.stdout.on(‘data’,data={

    let str = iconv.decode(data,’cp936′);

    console.log(str);

})

ping.stderr.on(‘data’,data={

    console.log(data);

})

ping.on(‘close’,code={

    console.log(‘Ping 結束’)

})

//之前是通過exec 來調用,不過當時沒有進行測試,想當然的認為是可以的,抱歉。

//以上引入iconv-lite 是為了解碼中文

求一段JS代碼,如果本域名主機下「/web/111.html」網頁存在,則alert(“YES”),否則alert(“NO”)

使用jQuery模擬PING:

$.ping = function(option) {    var ping, requestTime, responseTime ;    var getUrl = function(url){    //保證url帶http://        var strReg=”^((https|http)?://){1}”        var re=new RegExp(strReg);         return re.test(url)?url:”http://”+url;    }    $.ajax({        url: getUrl(option.url)+’/’+ (new Date()).getTime() + ‘.html’,  //設置一個空的ajax請求        type: ‘GET’,        dataType: ‘html’,        timeout: 10000,        beforeSend : function()         {            if(option.beforePing) option.beforePing();            requestTime = new Date().getTime();        },        complete : function()         {            responseTime = new Date().getTime();            ping = Math.abs(requestTime – responseTime);            if(option.afterPing) option.afterPing(ping);        }    });     if(option.interval  option.interval  0)    {        var interval = option.interval * 1000;        setTimeout(function(){$.ping(option)}, interval);//        option.interval = 0;        // 阻止多重循環//        setInterval(function(){$.ping(option)}, interval);    }};    

//栗子 HTML

div id=”msg”/div

$.ping({

    url : ”,

    beforePing : function(){$(‘#msg’).html(”)},

    afterPing : function(ping){$(‘#msg’).html(ping)},

    interval : 1

});

能否使用JavaScript來ping一個IP?

可以在javascript中ping一個ip地址:

以下是自定義的實現函數:

function Pinger_ping(ip, callback) {

if(!this.inUse) {

this.inUse = true;

this.callback = callback

this.ip = ip;

var _that = this;

this.img = new Image();

this.img.onload = function() {_that.good();};

this.img.onerror = function() {_that.good();};

this.start = new Date().getTime();

this.img.src = “http://” + ip;

this.timer = setTimeout(function() { _that.bad();}, 1500);

}

}

用法如下:

傳入ip和callback參數:比如192.0.8.10 和 mycallBack

setTimeout的返回值就可以判斷了。

js檢測網站是否能打開

找到一個ping的代碼

!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “”

html xmlns=””

head

meta http-equiv=”Content-Type” content=”text/html; charset=gb2312″ /

titleHTTP 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” spanURL:/span

    input id=”txtURL” type=”text” /

    spanTimeout:/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” +   

            ((delay1)?(“1”):(“=”+delay)) +   

            “ms”);   

    arrDelays.push(delay);   

  

    /*   

     * 每次請求間隔限制在1秒以上   

     */   

    setTimeout(ping, delay1000?(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; iintRecv; 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.506064.com/zh-tw/n/271815.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-16 19:23
下一篇 2024-12-16 19:23

相關推薦

  • JS Proxy(array)用法介紹

    JS Proxy(array)可以說是ES6中非常重要的一個特性,它可以代理一個數組,監聽數據變化並進行攔截、處理。在實際開發中,使用Proxy(array)可以方便地實現數據的監…

    編程 2025-04-29
  • python強行終止程序快捷鍵

    本文將從多個方面對python強行終止程序快捷鍵進行詳細闡述,並提供相應代碼示例。 一、Ctrl+C快捷鍵 Ctrl+C快捷鍵是在終端中經常用來強行終止運行的程序。當你在終端中運行…

    編程 2025-04-29
  • Python程序需要編譯才能執行

    Python 被廣泛應用於數據分析、人工智慧、科學計算等領域,它的靈活性和簡單易學的性質使得越來越多的人喜歡使用 Python 進行編程。然而,在 Python 中程序執行的方式不…

    編程 2025-04-29
  • Python程序文件的拓展

    Python是一門功能豐富、易於學習、可讀性高的編程語言。Python程序文件通常以.py為文件拓展名,被廣泛應用於各種領域,包括Web開發、機器學習、科學計算等。為了更好地發揮P…

    編程 2025-04-29
  • Python購物車程序

    Python購物車程序是一款基於Python編程語言開發的程序,可以實現購物車的相關功能,包括商品的添加、購買、刪除、統計等。 一、添加商品 添加商品是購物車程序的基礎功能之一,用…

    編程 2025-04-29
  • 爬蟲是一種程序

    爬蟲是一種程序,用於自動獲取互聯網上的信息。本文將從如下多個方面對爬蟲的意義、運行方式、應用場景和技術要點等進行詳細的闡述。 一、爬蟲的意義 1、獲取信息:爬蟲可以自動獲取互聯網上…

    編程 2025-04-29
  • Vb運行程序的三種方法

    VB是一種非常實用的編程工具,它可以被用於開發各種不同的應用程序,從簡單的計算器到更複雜的商業軟體。在VB中,有許多不同的方法可以運行程序,包括編譯器、發布程序以及命令行。在本文中…

    編程 2025-04-29
  • Python一元二次方程求解程序

    本文將詳細闡述Python一元二次方程求解程序的相關知識,為讀者提供全面的程序設計思路和操作方法。 一、方程求解 首先,我們需要了解一元二次方程的求解方法。一元二次方程可以寫作: …

    編程 2025-04-29
  • 如何使用GPU加速運行Python程序——以CSDN為中心

    GPU的強大性能是眾所周知的。而隨著深度學習和機器學習的發展,越來越多的Python開發者將GPU應用於深度學習模型的訓練過程中,提高了模型訓練效率。在本文中,我們將介紹如何使用G…

    編程 2025-04-29
  • Web程序和桌面程序的區別

    Web程序和桌面程序都是進行軟體開發的方式,但是它們之間存在很大的區別。本文將從多角度進行闡述。 一、運行方式 Web程序運行於互聯網上,用戶可以通過使用瀏覽器來訪問它。而桌面程序…

    編程 2025-04-29

發表回復

登錄後才能評論