在Android中上传和下载费率分析

Tin*_*a J 7 networking android android-networking speed-test

我正在尝试开发一个Android应用程序来衡量我的网络的上传和下载速度,这可能是我需要运行并每隔2秒钟对其进行一次配置.SpeedTest.netapp是一个理想的app工作方式,但它不是开源的.而且,我需要它每2秒运行一次.完成测试需要几秒钟.

我怎样才能做到这一点?目前我只是下载一个在互联网上找到的小型随机.txt文件,并size/time-to-download作为下载速率的衡量标准.但每次都会得到奇怪的结果.显然这种方法不起作用.

更新:下载完成.有关如何实现上传速度的任何建议?

Ank*_*wal 8

您需要下载相当大的文件,需要至少15秒才能下载.文件越大,您获得的结果就越好.使用具有高可用性的永远在线服务器.另外,仅在网络呼叫时使用累积(我相信你必须使用一些套接字来while循环读取.所以请System.currentTimeMillis()在之前和之后socket.read()继续添加它们)

这几乎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);
     }
}
Run Code Online (Sandbox Code Playgroud)


Sam*_*non 5

要进行上传,您需要与服务器建立双向通信.我会用一个简单的循环来做到这一点:

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.
}
Run Code Online (Sandbox Code Playgroud)