0

我需要从 java 中测量 java 应用程序使用的字节数(即,除了没有安全管理器来处理之外,我对 JVM 没有任何特殊访问权限)但我需要发送/接收的所有字节包括协议头等。有人对如何做到这一点有好主意吗?

显而易见的举措是创建一个新的 URLConnectionHandler 并将计量插入到 IO 流中。然而,这并没有为我提供发送到/从 Java 应用程序的 HTTP/HTTPS 消息的标头大小。

4

1 回答 1

2

如果您想要在线路上的确切字节数,您需要操作系统的帮助,并且以非常特定于平台的方式。

网络流量是一组头巾娃娃。

URLConnection 添加一个头,TCP 堆栈为每个包添加一个头,以太网堆栈添加另一个头。然后是程序背后发生的确认、重新传输等。然后是dns请求和路由包,...

您需要特殊的规则来将应用程序的流量与其他流量分开。

总而言之,非常绝望。

出于实际目的,我建议您在机器上设置应用程序并使用 wireshark 或类似工具来捕获流量。按照您的描述在内部测量有效负载,然后使用外部测量来测量开销。

然后估计典型使用的开销百分比,并将其添加到应用程序的有效负载测量中。

它将足够接近以至于没有人会注意到差异。

于 2010-06-23T05:37:29.033 回答