我正在尝试使用USB Dongle编写用于检查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);
}
}
答案 0 :(得分:0)
您可以使用wget
下载文件
并使用“时间”测量下载时间。
所以,你可以这样写:
time wget http://....
wget
也可以测量时间,但我更喜欢time
,因为它会报告用于下载的全部时间。
要测试上传速度,您可以使用curl
:
time curl -i -F name=test -F filedata=@localfile.jpg http://example.org/upload