1

我想检查从浏览器到服务器的 ping。

Ping/延迟不应该来自服务器,而是来自客户端的机器。

我看过像 Pingtest.net 这样的网站,所以可以从浏览器中完成。

任何语言都可以。

服务器 ping 也可以通过普通 shell 命令 ping 以外的 UDP 数据包进行测试。

我该如何进行。?

4

3 回答 3

1

尝试对 JavaScript 使用XMLHTTPRequest()。目标是制作大约 10 个对象并将它们放在一个数组中。然后在每一个中使用 onreadystatechange。对于其中的函数,使用状态 1 启动计时器,使用状态 3 完成计时器。使用对象 Date() 来获取时间。

这就是解决这个问题的全部想法。如果您需要更多,只需评论我的答案,我会尽力使其更完整和“恶作剧”。


假设您知道如何用 javascript 编程,这是一个可能的解决方案的想法:您首先创建一个数组,您将在每个位置插入一个 XMLHTTPRequest() 的实例。然后,您将创建一个返回函数的函数,其中:
外部函数将为“当前”请求保存某种标识,包括对实例的引用。该功能应该立即执行。
内部函数应该用于执行状态并知道何时“启动”计时器以及何时“停止”计时器。注意打开连接并将标头发送给所有人,等待得到答案,最后注册你得到的时间。做一些数学运算,你就会得到 ping。

这就是这背后的全部想法。祝你好运!

于 2012-08-20T10:01:10.970 回答
0
<script type="text/javascript">
try {
  netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
} catch (e) {
  alert("Permission UniversalBrowserRead denied.");
}

var req = new XMLHttpRequest();
    req.open('GET', 'http://www.mozilla.org/', false);.
    req.send();
    if(req.status == 200) {
        alert(req.responseText);
    }
于 2013-09-22T00:20:40.333 回答
0

试试这个——我调用了一个空白页面网站,这样它就不会计算加载时间,而是作为 ping 时间。仅供参考 - 它仍然不会与通过运行 ping 命令测量的 ping 时间相同。

function loadXMLDoc() {  
    var xhttp = new XMLHttpRequest(); 
    var ping = new Date;
    xhttp.open("GET", "http://cors-anywhere.herokuapp.com/blank.org/", false);
    xhttp.setRequestHeader('Cache-Control', 'no-cache');
    xhttp.send();
    if(xhttp.status == 200) {
             ping = new Date - ping;
             console.log('Ping ' + ping + 'ms');
    }
  }
于 2019-10-07T22:43:29.640 回答