0
A
回答
0
我的問題解決了。我想暫時確定網絡速度,並且我想對每個上傳文件(或下載文件)使用動態限制速度(例如:%50以下)。例如;如果我的上傳速度爲每秒100kb,它應該是動態的每秒50kb,如果它是每秒150kb,它應該是動態每秒75kb。
因此,我上傳我的文件的第一個包,並確定bytes per second
。這是我的上傳速度。然後,我確定我的動態限制(limit = myUploadSpeed%50)。然後,計算睡眠持續時間(sleep_duration=((myUploadSpeed-limit)/limit)*1000)
(有1000從毫秒轉換爲秒)。 if (limit>bytesPerSecond)
發送到接下來的每個數據包,等到sleep_duration
我的代碼扼殺如下:
private void throttle() throws IOException {
long limit= calculateMaxBytesPerSecond();
long bytePerSec= getBytesPerSec();
if (limit!=-1 && bytePerSec > limit) {
long sleep_duration=((bytePerSec-limit)/limit)*1000;
try {
if(sleep_duration==0)
Thread.sleep(1000);
else
Thread.sleep(sleep_duration);
totalSleepTime += SLEEP_DURATION_MS;
} catch (InterruptedException e) {
throw new IOException("Thread aborted", e);
}
}
}
private long calculateMaxBytesPerSecond() {
switch (streamType) {
case 0:
if(connectionManager.getDownloadSpeedLimit()>0)
return connectionManager.getDownloadSpeedLimit()/downloadManager.getTaskCount();
else
return -1;
case 1:
if(connectionManager.getUploadSpeedLimit()>0)
return connectionManager.getUploadSpeedLimit()/uploadManager.getTaskCount();
else
return -1;
}
return Long.MAX_VALUE;
}
public long getBytesPerSec() {
long elapsed = (System.currentTimeMillis() - startTime)/1000;
if (elapsed == 0) {
return bytesRead;
} else {
return bytesRead/elapsed;
}
}
1
如果您希望每秒發送X MB,請發送X MB,如果小於1秒,請等到第二秒結束。要確定您發送的數據量,請在發送數據時保留一個計數器。
相關問題
- 1. iOS網絡(速度和流量)優化
- 2. 使用Java優化下載速度
- 3. 使用java優化下載速度
- 4. 網站速度優化
- 5. 優化jQuery速度
- 6. PHP速度優化
- 7. 2-Dence神經網絡精度優化
- 8. Whatsapp網絡:速度
- 9. Sigar網絡速度
- 10. 速度優化使用BitmapFactory.Options.inSampleSize的
- 11. 針對網絡使用優化圖像
- 12. 使用TrafficStats網絡連接速度
- 13. 谷歌速度優化的Css優化
- 14. 如何以速度速度優化此JAVA代碼?
- 15. 如何使用android-ndk優化本地代碼(速度優化)
- 16. 如何優化使用java插入數據的處理速度?
- 17. 使用Java測量內部網絡速度/帶寬
- 18. 使用java程序分析網絡速度
- 19. CreateInstanceFromAndUnwrap速度和優化
- 20. Yii2:GridView速度優化
- 21. 爲速度優化cURL
- 22. GridSeachCV優化速度減慢
- 23. Python的速度優化
- 24. 速度Mysql查詢優化
- 25. Shopify店的速度優化
- 26. 的preg_replace速度優化
- 27. CSS優化速度更快
- 28. 速度優化JavaScript函數
- 29. 優化加載速度AsyncTask
- 30. 優化網絡帶寬