Java的PCAP纳秒分辨率

贪睡92

语境

当前状态

对于性能分析,我公司对纳秒分辨率感兴趣。到目前为止,我们一直在使用硬件时间戳,纳秒级的支持很快被侵入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文件?


谢谢!:)

Yiftach

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

打开盖子:

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

要读取数据包和时间戳:

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

希望对您有所帮助!

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章