2016-02-21 53 views
7

我想開發一個Android應用程序來測量我的網絡的上傳和下載速度,這可能需要運行並每隔2秒左右進行一次配置。 SpeedTest.net應用程序是一個類似的理想應用程序,但它不是開源的。而且,我需要它每2秒運行一次。完成測試需要幾秒鐘的時間。在Android上傳和下載率剖析

我該怎麼做?目前我只是下載一個在互聯網上的某個地方發現的小隨機.txt文件,並測量size/time-to-download作爲衡量下載速度。但我每次都會得到奇怪的結果。顯然這種方法是行不通的。

更新:下載完成。有關如何實現上傳速度的建議?

回答

8

您需要下載相當大的文件,這需要至少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); 
    } 
} 
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. 
}