上下文
现状
对于性能分析,我的公司对纳秒分辨率感兴趣。到目前为止,我们一直在使用硬件时间戳,纳秒的支持很快被黑客入侵到clibpcap库中。
现在,对纳秒的支持似乎已添加到库中(请参阅其他堆栈溢出答案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
枚举。我会试着用这个来更新我的答案。注:我还直接问了纳秒分辨率的问题,如果有任何答案,我会更新我的问题…
其他解决方案
有没有人知道在仍然能够以纳秒级精度读取pcap文件的情况下从java生态系统中获利的另一种方法?
谢谢!:)
最佳答案
我知道这个问题由来已久,但只是为了防止其他人有这种需要-如果使用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/