【问题标题】:Upload and Download rate profiling in Android [closed]Android中的上传和下载速率分析[关闭]
【发布时间】:2016-02-26 11:54:19
【问题描述】:
我正在尝试开发一个 Android 应用程序来测量我的网络的上传和下载速度,我可能需要每 2 秒左右运行一次并对其进行分析。 SpeedTest.net app 是一个理想的类似工作的应用程序,但是它不是开源的。此外,我需要它每 2 秒运行一次。完成测试需要几秒钟。
我该怎么做?目前,我只是下载在 Internet 上某个地方找到的一个小的随机 .txt 文件,并测量 size/time-to-download 作为下载速率的衡量标准。但我每次都会得到奇怪的结果。显然这种方法行不通。
更新:下载完成。关于如何实现上传速度的任何建议?
【问题讨论】:
标签:
android
networking
android-networking
speed-test
【解决方案1】:
您需要下载一个相当大的文件,至少需要 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);
}
}
【解决方案2】:
要进行上传,您需要设置与服务器的双向通信。我会用一个简单的循环来做到这一点:
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.
}