Android 中的上传和下载速率分析
Upload and Download rate profiling in Android
我正在尝试开发一个 Android 应用程序来测量我的网络的上传和下载速度,我可能需要 运行 并每 2 秒左右对其进行一次分析。 SpeedTest.net
应用程序是一个类似工作的理想应用程序,但是它不是开源的。此外,我需要它每 2 秒 运行。完成测试需要几秒钟。
我该怎么做?目前,我只是下载一个在 Internet 上某处找到的随机小 .txt 文件,并测量 size/time-to-download
作为下载率的衡量标准。但我每次都会得到奇怪的结果。显然这种方法不起作用。
更新:下载完成。关于如何实现上传速度的任何建议?
您需要下载一个相当大的文件,至少需要 15 秒才能下载。文件越大,您收到的结果就越好。使用具有高可用性的永远在线的服务器。此外,仅在网络调用时使用累积(我相信您必须使用某些套接字在 while
循环中读取。因此在 socket.read()
之前和之后执行 System.currentTimeMillis()
并保持添加它们)
这几乎就是 SpeedTest.net
所做的
就上传而言,你可以做同样的事情。粗略的伪代码:
upload (String remote, InputStream localfile){
Socket s = openDataConnection(remote);
OutputStream os = new BufferedOutputStream (s.getOutputStream(), MAX_BUFFER_SIZE);
byte[] buffer = new byte[MAX_BUFFER_SIZE];
long totalTime = 0L;
while((buffer = localfile.read())!= -1){
long startTime = System.currentTimeMillis();
os.write(buffer);
long endTime = System.currentTimeMillis();
totalTime += (endTime - startTime);
}
}
要进行上传,您需要与服务器建立双向通信。我会用一个简单的循环来完成:
while(x){
Starttime =getCurrentTime()
Sendfile() //Send a Xmb file that the server can verify
waitForVerification() // Wait for a reply from server.
compareCurrentTimeWithStartingTime() // compare the times.
}
我正在尝试开发一个 Android 应用程序来测量我的网络的上传和下载速度,我可能需要 运行 并每 2 秒左右对其进行一次分析。 SpeedTest.net
应用程序是一个类似工作的理想应用程序,但是它不是开源的。此外,我需要它每 2 秒 运行。完成测试需要几秒钟。
我该怎么做?目前,我只是下载一个在 Internet 上某处找到的随机小 .txt 文件,并测量 size/time-to-download
作为下载率的衡量标准。但我每次都会得到奇怪的结果。显然这种方法不起作用。
更新:下载完成。关于如何实现上传速度的任何建议?
您需要下载一个相当大的文件,至少需要 15 秒才能下载。文件越大,您收到的结果就越好。使用具有高可用性的永远在线的服务器。此外,仅在网络调用时使用累积(我相信您必须使用某些套接字在 while
循环中读取。因此在 socket.read()
之前和之后执行 System.currentTimeMillis()
并保持添加它们)
这几乎就是 SpeedTest.net
所做的
就上传而言,你可以做同样的事情。粗略的伪代码:
upload (String remote, InputStream localfile){
Socket s = openDataConnection(remote);
OutputStream os = new BufferedOutputStream (s.getOutputStream(), MAX_BUFFER_SIZE);
byte[] buffer = new byte[MAX_BUFFER_SIZE];
long totalTime = 0L;
while((buffer = localfile.read())!= -1){
long startTime = System.currentTimeMillis();
os.write(buffer);
long endTime = System.currentTimeMillis();
totalTime += (endTime - startTime);
}
}
要进行上传,您需要与服务器建立双向通信。我会用一个简单的循环来完成:
while(x){
Starttime =getCurrentTime()
Sendfile() //Send a Xmb file that the server can verify
waitForVerification() // Wait for a reply from server.
compareCurrentTimeWithStartingTime() // compare the times.
}