我想通过移动网络测量我的HTTP请求传输和接收的数据。我在Android 2.2中找到了TrafficStats API,但是我从中得到的数字似乎太低了。我正在通过3G网络测量真实设备(HTC Desire)。 在请求之前,a计算自启动时间起的tx / rx数据,然后执行GET请求,然后再次计算rx / tx数字:
long bytesStart = TrafficStats.getTotalTxBytes() + TrafficStats.getTotalRxBytes();
// execute request (Apache HTTP client)
client.execute(get);
long totalBytesNow = TrafficStats.getTotalTxBytes() + TrafficStats.getTotalRxBytes();
long bytesDiff = totalBytesNow - bytesStart;
对于bytesDiff,我得到大约1.5KB的数字,它应该是3.5KB。 totalBytes数量约为5MB,这似乎是设备运行10小时的合理数据量。
我读here on stackoverflow数字来自文件,是不是数据没有立即刷新到文件中?或者为什么我的数字总是太低(我检查了服务器上的数据大小,它真的更大)? 这是我的HTC Desire设备(HTC的Android 2.2)的问题,TrafficStats API是否适用于任何人?
谢谢, 马丁
答案 0 :(得分:0)
可能是HTTP堆栈正在压缩您的数据吗?
此外,/sys
上的文件不是常识中的实际文件,它们是内核数据的文件接口(您知道,Unix / Linux的'everything is a file'哲学)
答案 1 :(得分:0)
好的,我在编码中发现了问题。在“client.execute(get);”之后我只转移了标题等,而不是内容。在评估内容InputStream之后,数字是正确的......