当前位置: 首页 > 知识库问答 >
问题:

URLConnection低级字节计数

宇文鸣
2023-03-14

我正在尝试使用URLConnection获得可能的最低级别的字节计数。我已经使用来自Apache Commons IO的CountinInputStream和CountinOutputStream来计数通过两个流的数据,但我在那里得到的字节计数等于我发送的主体大小我收到的响应主体大小。

在HttpClient中,我有一个MeasurengClientConnManager,我认为它是一个较低级别的字节计数。

为了获得最精确的值,我使用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上没有看到一些字节大小的指示头被发送?为什么我只看到身体的大小?标题在哪里?url呼叫?DNS解析字节?

    有没有办法测量对URLConnection库的调用在网络接口上发送的每个字节?越低越好!

  • 共有1个答案

    司空修贤
    2023-03-14

    URLConnection的目的是抽象出标题的读取(和写入)。该类的输入和输出流只代表身体;有一些特定的例程用于处理头文件,这样就不必直接写入头文件。

    如果你在Sun/OracleJRE中仔细观察,你会发现他们的HttpURLConnection实现使用的是他们自己版本的HTTP客户端。该客户正在对整个内容进行完整的读写。

    您可以编写自己的URLConnection实现,模仿Sun/Oracle(和Apache)的做法,但同时跟踪读/写的字节数。我打赌这有点复杂。

     类似资料:
    • These are advanced, low-level API features that should, for most people not be necessary to worry about. They are lightly documented here, and in the future will have more documentation, but the empha

    • 主要内容:实例,实例,实例,实例,实例,实例门控时钟 通常情况下,时钟树由大量的缓冲器和反相器组成。而时钟信号为设计中翻转率最高的信号,时钟树的功耗可高达整个设计功耗 30%。加入门控时钟(clock gating)电路,可减少时钟树的开关行为,能节省开关功耗。同时,时钟引脚开关行为的减少,寄存器的内部功耗也会减少。所以,采用门控时钟,可以有效地降低功耗。 实现原理 通俗来讲,当模块或触发器不工作时,将时钟关闭而不影响正常功能的逻辑,可以称

    • 主要内容:并行与流水,实例,实例,资源共享与状态编码,实例,实例,实例下表显示了在数字设计的各个层次上可减少功耗的百分比。RTL 级之后,功耗的减少量已经非常有限。 设计层次 改善程度 系统级 50% ~ 90% RTL 级 20% ~ 50% 门级 10% ~ 15% 晶体管级 5% ~ 10% 版图级 < 5% 作为一个编写 Verilog 的伪码农,系统级减少功耗的工作也可参与一些,但重点应该放在 RTL 级来减少功耗。 下面就分 2 节来介绍从 RTL 级来

    • 编写代码前,在系统与架构层次上制定完善低功耗方案,可以节省 50% 以上的功耗。此类低功耗设计和代码描述基本没有关系,往往由系统和架构人员进行设计。此类人员需要较丰富的硬件经验,能对系统有一个良好的整体把握。方案制定后,再交予功能设计人员(例如 IC 前端设计、FPGA 工程师等)实现。 多电压技术 一般来说,电压越低,功耗越低,但是性能往往会越差。综合功耗与性能的考虑,可以对不同的模块采用不同的

    • 除了基本的读写操作, ByteBuf 还提供了它所包含的数据的修改方法。 随机访问索引 ByteBuf 使用zero-based 的 indexing(从0开始的索引),第一个字节的索引是 0,最后一个字节的索引是 ByteBuf 的 capacity - 1,下面代码是遍历 ByteBuf 的所有字节: Listing 5.6 Access data ByteBuf buffer = ...;

    • 岗位是北京-抖音设计中心(UED) 一面简单概括为四类问题 1.个人情况提问 (包括实习经历、作品集讲述、单独项目详细介绍) 2.通用专业能力的提问 (流行的设计风格/设计思路/关注的设计师等) 3.岗位相关提问 (了解我们的产品吗?你使用过xx吗?对业务相关的内容提问,兴趣或经验,体会或理解) 4.职业稳定性 (会判断你的专业程度,比如为什么在设计的ui/视觉里选择这个xx的方向。未来规划等)