के साथ डाउनलोड स्पीड मापना मैं एक एंड्रॉइड ऐप पर काम कर रहा हूं जहां मुझे यथासंभव सटीक रूप से, मौजूदा कनेक्शन की डाउनलोड गति को मापने की आवश्यकता है। यहाँ सबसे अच्छा तरीका मैं अब तक मिल सकता है है (मूल रूप से मैं एक टाइमर शुरू, एक तेजी से सर्वर से एक Linux distro डाउनलोड करने, लगभग 200 Kbytes डाउनलोड, तो घड़ी बंद करो और समय बीत जाँच और कुल बाइट्स डाउनलोड किया शुरू):जावा/एंड्रॉइड
try{
InputStream is = new URL("http://www.domain.com/ubuntu-linux.iso").openStream();
byte[] buf = new byte[1024];
int n = 0;
startBytes = TrafficStats.getTotalRxBytes(); /*gets total bytes received so far*/
startTime = System.nanoTime();
while(n<200){
is.read(buf);
n++;
}
endTime = System.nanoTime();
endBytes = TrafficStats.getTotalRxBytes(); /*gets total bytes received so far*/
totalTime = endTime - startTime;
totalBytes = endBytes - startBytes;
}
catch(Exception e){
e.printStackTrace();
}
उसके बाद मुझे बस उठाए गए बाइट्स की संख्या को विभाजित करने की आवश्यकता है और यह डाउनलोड गति को बीपीएस में देगी।
प्रश्न: 1. क्या यह विधि सटीक होगी? 2. क्या आप बेहतर जानते हैं?
बहुत बहुत धन्यवाद।
वे जिस तरह से आपने इसे अभी स्थापित किया है, यह सटीक नहीं होगा। 'इनपुटस्ट्रीम.read' पूरी तरह से आपके बफर को भरने की गारंटी नहीं है। आपको यह देखने के लिए रिटर्न वैल्यू की जांच करनी होगी कि कितने 'बाइट' वास्तव में पढ़े गए थे। – Jeffrey
@ जेफरी, आपने कोड को विस्तार से नहीं पढ़ा। मैं बाइट्स की संख्या प्राप्त करने के लिए पढ़ने() पर भरोसा नहीं कर रहा हूं। मैं इसे getTotalRxBytes() फ़ंक्शन के माध्यम से ओएस से सीधे प्राप्त कर रहा हूं। –
आह, मेरा बुरा। मैं वास्तव में उस हिस्से पर स्कीम किया था। आपके पास समाधान कम या ज्यादा सटीक होगा। – Jeffrey