मैं URLConnection के साथ बाइट गिनती के निम्नतम स्तर को प्राप्त करने का प्रयास कर रहा हूं। मैं अपाचे कॉमन्स आईओ से CountingInputStream और CountingOutputStream के साथ दो धाराओं से गुज़रने वाले डेटा को गिनने के लिए पहले से ही गया हूं, लेकिन बाइट गिनती मुझे प्राप्त होने वाले शरीर के आकार के बराबर है + प्रतिक्रिया शरीर का आकार मैं वापस प्राप्त कर रहा हूं।URL कनेक्शन कम स्तर बाइट गिनती
एचटीपी क्लाइंट में, मेरे पास MeasuringClientConnManager था जो मुझे लगता है कि एक और निम्न स्तर की बाइट गिनती है।
सबसे सही मूल्य प्राप्त करने के लिए, मैं उन तरीकों के साथ उन पुस्तकालयों पर गिनती तुलना कर रहा हूं, TrafficStats का उपयोग कर:
public static long getCurrentRx(Context context){
int uid = context.getApplicationInfo().uid;
return TrafficStats.getUidRxBytes(uid);
}
public static long getCurrentTx(Context context){
int uid = context.getApplicationInfo().uid;
return TrafficStats.getUidTxBytes(uid);
}
public static long getCurrentNetworkUsage(Context context){
return getCurrentRx(context) + getCurrentTx(context);
}
public static long getDiffNetworkUsage(Context context, long previousNetworkUsage){
return getCurrentNetworkUsage(context) - previousNetworkUsage;
}
उन तरीकों का उपयोग करते हुए मैं URLConnection से HttpClient साथ बहुत करीब मान प्राप्त की।
दो सवाल:
कैसे URLConnection पर आते हैं, मैं OutputStream पर कुछ बाइट आकार संकेत हेडर भेजा जाता है नहीं दिख रहा है? मैं केवल शरीर के आकार को कैसे देख सकता हूं? हेडर कहां हैं? यूआरएल कॉल? डीएनएस समाधान बाइट्स?
क्या प्रत्येक बाइट को मापने का कोई तरीका है कि URLConnection लाइब्रेरी पर कॉल नेटवर्क इंटरफ़ेस पर भेजता है? सबसे कम स्तर, बेहतर!