java - 来自 Java 的 PCAP 纳秒分辨率

标签 java pcap libpcap tcpdump jnetpcap

上下文

现状

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

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

pcap_open_offline_with_tstamp_precision(pathname, PCAP_TSTAMP_PRECISION_NANO, errbuf);

future

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

我首先希望能够使用jNetPcap但我找不到如何使用 libpcap 的 Java 绑定(bind)来支持纳秒分辨率。


问题

jNetPcap

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

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

注意:我也直接在 jNetPcap's support forum 上询问过纳秒分辨率,如果我在那方面得到任何答案,我会更新我的问题...

其他解决方案

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


谢谢! :)

最佳答案

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

打开盖子:

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

读取数据包和时间戳:

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

希望对您有所帮助!

关于java - 来自 Java 的 PCAP 纳秒分辨率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19972145/

相关文章:

java - JTable删除所有行异常

wireshark - 如何使用 tshark 从 pcap 文件打印请求-响应对?

java - JnetPcap无线接口(interface)

c - 使用 pcap 段错误进行数据包嗅探

libpcap - 使用 pcap_next_ex 或 pcap_next (libpcap) 的正确方法

c - libpcap 源地址和目标地址在捕获的 ipheader 中始终为 NULL。

java - 插入数据库时​​准备好的语句中出现语法错误

java - 将正则表达式字符串从 Java 转换为 Python

java - 关于理解的奇怪问题

wireshark - 如何使用tcpdump过滤MAC地址?