【问题标题】:PCAP nanosecond resolution from Java来自 Java 的 PCAP 纳秒分辨率
【发布时间】:2013-11-27 03:19:07
【问题描述】:

上下文

当前状态

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

似乎现在已经在库中添加了对纳秒的支持(参见其他 Stack Overflow 答案here),git repository 上的最后一个版本提供了以下方法:

pcap_open_offline_with_tstamp_precision(pathname, PCAP_TSTAMP_PRECISION_NANO, errbuf);

未来

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

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


问题

jNetPcap

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

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

注意:我还直接在 jNetPcap's support forum 上询问了纳秒分辨率,如果我得到任何答案,我会更新我的问题... p>

其他解决方案

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


谢谢! :)

【问题讨论】:

  • 我还没有阅读整篇文章,但是System.nanoTime() 你在搜索什么?
  • 一点也不,呵呵! System.nanoTime() 将给出最精确的可用计时器的值。它只允许在给定的 Java 程序中进行性能分析。阅读帖子的其余部分:在我的例子中,我在 PCAP 文件中有硬件时间戳,我想计算延迟后验
  • 很抱歉没有阅读整篇文章。如果 LGPL 对您来说不是问题,您可以只分叉 jNetPcap 项目并添加纳秒精度。如果我理解正确,它只是一个包装器。

标签: java pcap libpcap tcpdump jnetpcap


【解决方案1】:

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

打开盖子:

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

读取数据包和时间戳:

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

希望有帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-11-25
    • 2023-04-07
    • 2014-03-12
    • 1970-01-01
    • 2019-06-21
    • 1970-01-01
    • 2011-07-18
    • 1970-01-01
    相关资源
    最近更新 更多