gpt4 book ai didi

java - URLConnection 低级字节计数

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:07:40 29 4
gpt4 key购买 nike

我正在尝试使用 URLConnection 获得最低级别的字节计数.我已经用 CountingInputStream 计算了两个流传递的数据和 CountingOutputStream来自 Apache Commons IO,但我到达那里的字节数等于我发送的正文大小 + 我收到的响应正文大小。

在 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 值更接近。

两个问题:

  1. 为什么 URLConnection 出现了,我在 OutputStream 上没有看到 header 已发送的一些字节大小指示?我怎么只看到车身尺寸?标题在哪里?网址调用? DNS 解析字节?

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

最佳答案

URLConnection 旨在抽象出 header 的读取(和写入)。该类的输入和输出流只代表主体;有一些特定的例程来处理 header ,因此不必直接编写这些 header 。

如果您深入了解 Sun/Oracle JRE,您会发现他们的 HttpURLConnection 实现使用的是他们自己版本的 HTTP 客户端。该客户正在对整个内容进行完整的阅读和写作。

您可以编写自己的 URLConnection 实现来模仿 Sun/Oracle(和 Apache)正在做的事情,但同时跟踪读取/写入的字节数。不过,我敢打赌这有点复杂。

关于java - URLConnection 低级字节计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33596012/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com