如何检查上传和下载速度

Posted

技术标签:

【中文标题】如何检查上传和下载速度【英文标题】:How to check upload and download speed 【发布时间】:2014-02-17 23:35:31 【问题描述】:

我正在尝试使用 USB 加密狗编写代码来检查我的 ISP 的上传和下载速度。加密狗中的服务器是 Lighttpd。

我目前的下载计划是编写一个从服务器下载文件的shell脚本(文件应该足够大)并在2秒内终止进程。然后我可以获得文件大小。我重复这个过程n次(这里是 10 次),取平均值。从统计上我相信移动平均线是最好的值。请帮忙。

另外,

我的上传计划是取一个大文件(20 MB)并使用shell脚本(也可以使用php)上传,并用它来测量速度。我不知道如何在这里测量上传速度。我需要弥合通信差距,设备硬件具有价值,我需要获得正确的值以显示给用户。需要帮助。

上传代码如下。(它是一个javascript文件) 注意:var params 约为 350 KiB

var uploadhttp;
var url = "http://www.example.com";
var params = 
"RANDOM CHARACTER SET. This lone character file should be large enough";




function getHTTPObject() 

    if(!uploadhttp && typeof XMLHttpRequest != "undefined") 
    
      try
             
        if(BrowserType=="MSIE")
            uploadhttp=new XDomainRequest(); 
        else
            uploadhttp = new XMLHttpRequest();          
        
        catch(e)
        
            alert(e);
        
/*      if(!uploadhttp)
            //alert("uploadhttp object creation failed");
            
            else
            //alert("uploadhttp object created successfully");
            
 */ 



function handler() //Call a function when the state changes.
    if(uploadhttp.readyState == 4 && uploadhttp.status == 200) 
        //alert(uploadhttp.responseText);
    


function getMethod() 
    getHTTPObject();
    /* if(!uploadhttp)
        //alert("failed to create object"); */

    if(uploadhttp)
    
        uploadhttp.open("GET", url, true);
        uploadhttp.onreadystatechange = handler;
        uploadhttp.send(null);
    


function postMethod() 
    try
    
    getHTTPObject();
    //if(!uploadhttp)
        //alert("failed to create object");
    if(uploadhttp)
    
        uploadhttp.open("POST", url, true);//,"jio","rancore");
    

    //Send the proper header infomation along with the request
    //uploadhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");

    uploadhttp.onreadystatechange = handler;
    if(BrowserType=="MSIE")
    
        uploadhttp.send(params);
    
    else
    
        var iLen = bufferedData.length;
        uploadhttp.send(bufferedData);
    
    
    catch(e)
    
       alert(e);
    

【问题讨论】:

【参考方案1】:

您可以使用wget 下载文件 并使用“时间”测量下载时间。 所以,你可以这样写:

time wget http://....

wget 也可以测量时间,但我更喜欢time,因为它报告了用于下载的全部时间。

要测试上传速度,您可以使用curl:

time curl -i -F name=test -F filedata=@localfile.jpg http://example.org/upload

【讨论】:

你能提出任何上传的想法吗? 使用哪种协议? HTTP 还是 FTP?如果是 FTP,则为 lftp,如果为 HTTP,则为 curl 你如何测量上传速度。就像在下载一样,我们在客户端得到一个文件。上传呢? 实际上我在 Internet Explorer 中的代码有问题。我不确定但可能 IE 的缓冲区大小很小,这可能是问题所在。 我不明白您为什么不想使用curl 进行上传测试。这是微不足道的

以上是关于如何检查上传和下载速度的主要内容,如果未能解决你的问题,请参考以下文章

怎么查看网络上传速度

MonoTorrent 客户端无法达到最大下载和上传速度

通过 ping 计算上传/下载速度

电信5M光纤,路由器Netcore NR235,10-15人使用,如何设置Qos主机带宽限制的上传速度和下载速度?

怎么测宽带上行速度?

如何提高ftp的上传速度