2016-02-21 13 views
7

में रेट प्रोफाइलिंग अपलोड और डाउनलोड करें मैं अपने नेटवर्क की अपलोड और डाउनलोड गति को मापने के लिए एक एंड्रॉइड ऐप विकसित करने की कोशिश कर रहा हूं, जो शायद मुझे इसे चलाने और इसे हर 2 सेकंड या उससे भी अधिक प्रोफाइल करने की आवश्यकता होगी। SpeedTest.net ऐप एक आदर्श ऐप है जो समान रूप से काम करता है, हालांकि, यह ओपन-सोर्स नहीं है। इसके अलावा, मुझे इसे हर 2 सेकंड में चलाने की आवश्यकता होगी। परीक्षण खत्म करने में कुछ सेकंड लगते हैं।एंड्रॉइड

मैं यह कैसे कर सकता हूं? वर्तमान में मैं सिर्फ इंटरनेट पर कहीं भी एक छोटी यादृच्छिक .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. 
}