【发布时间】:2016-02-09 07:47:49
【问题描述】:
我正在尝试使用URLConnection 获得最低级别的字节计数。我已经用来自 Apache Commons IO 的 CountingInputStream 和 CountingOutputStream 计算了通过两个流传递的数据,但是我得到的字节数等于我发送的正文大小 + 我的响应正文大小收到回来。
在 HttpClient 中,我有一个 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;
}
使用这些方法,我通过 HttpClient 获得了比 URLConnection 更接近的值。
两个问题:
怎么会出现 URLConnection,我在 OutputStream 上没有看到一些字节大小指示标头已发送?我怎么只看到身体大小?标题在哪里?网址调用? DNS 解析字节?
有没有办法测量对 URLConnection 库的调用在网络接口上发送的每个字节?等级越低越好!
【问题讨论】:
标签: java android apache io network-programming