有没有办法从java程序本身内部监控网络流量(传输的字节数,数据包计数)?
我想对第三方应用程序(IBM Domino DIIOP)进行基准测试。无法将自定义网络套接字等传递给库。基准测试应用程序在 Windows/Linux 上运行。现在我正在使用Wireshark进行监控,但这既复杂又耗时。Wireshark会对网络性能产生负面影响,因此它不是基准测试的完美选择。
有没有一个纯粹的Java解决方案可以在Windows和/或Linux上运行?
有没有办法从java程序本身内部监控网络流量?
有几种方法:
- 您可以监视套接字。请参考以下文章。互联网上也有许多图书馆。
- 您可以使用 AspectJ 的运行时编织来拦截带有 AOP 的调用并计算统计信息。
您仍然应该记住,并非所有统计信息都可以从应用程序中收集。网络通信委托给操作系统,应用程序通常不知道传输详细信息。
传输的字节数
您可以计算应用程序读取和写入的字节数,但不能计算通过网络传输的实际字节数。
数据包计数
数据包计数从应用程序不可用,因为网络协议驱动程序负责形成和传递数据包。