3

语境

当前状态

对于性能分析,我的公司对纳秒级分辨率很感兴趣。到目前为止,我们一直在使用硬件时间戳,并且纳秒的支持很快就被入侵到了 C libpcap库中。

似乎现在已经在库中添加了对纳秒的支持(请参阅此处的其他 Stack Overflow 答案),并且git 存储库上的最后一个版本使以下方法可用:

pcap_open_offline_with_tstamp_precision(pathname, PCAP_TSTAMP_PRECISION_NANO, errbuf);

未来

问题是,C 已经证明自己难以维护、难以扩展,而且由于我们仅将捕获用于分析,我们觉得我们可以从使用Java中受益。在性能分析方面,能够使用适当的 IDE、Maven、构建 Web 服务等似乎比执行速度更重要。

我最初希望能够使用jNetPcap,但我不知道如何使用 libpcap 的 Java 绑定支持纳秒级分辨率。


问题

jNetPcap

有谁知道使用 jNetPcap 以纳秒精度读取 Pcap 文件的简单方法?

更新:我刚刚发现TimestampResolution在 jNetPcap 的 Javadoc 中提到了一个枚举。我将尝试使用它并稍后更新我的答案。

注意:我还直接在jNetPcap 的支持论坛上询问了纳秒分辨率,如果我在那方面得到任何答案,我会更新我的问题......

其他解决方案

有谁知道另一种从 Java 生态系统中获利的方法,同时仍然能够以纳秒级精度读取 PCap 文件?


谢谢!:)

4

1 回答 1

1

我知道这个问题很老了,但以防万一其他人有这个需要——如果不是必须使用 jNetPcap,pcap4j似乎支持它。

打开盖子:

PcapHandle h = Pcaps.openOffline(fname, PcapHandle.TimestampPrecision.NANO);

读取数据包和时间戳:

Packet nextPacket = h.getNextPacket();
Timestamp timestamp = h.getTimestamp();

希望有帮助!

于 2016-08-26T07:59:25.383 回答