我正在使用SharpPcap + PacketDotNet库来处理一些.pcap文件,并且遇到了计算时间戳方式的错误。
获取此Timeval属性,这是以下几行:
PosixTimeval Timeval
{
DateTime Date;
ulong Seconds;
ulong MicroSeconds;
}
问题如下:假设您在Wireshark中打开了一个跟踪,其中一个数据包的时间戳为“0.002”。在其中一个程序中打开它后,它会检索数据包,并设置其{Time}设置为Seconds = 0
和MicroSeconds = 002 = 2
。这是在引擎盖下完成的,所以我无法避免它。
我的问题是,如果这个问题对于操纵pcap文件格式的其他库(可能都是?)是常见的,我认为它们是围绕同一个c / c ++函数集合构建的,或者这是一个问题只有我正在使用的那些。
答案 0 :(得分:1)
我是sharppcap / packet.net的作者。
您看到的带有时间戳值的错误是什么?您提到的转换似乎是正确的。 0.002秒是2毫秒。
时间戳值应该是捕获数据包时的完整unix时间值。当然,0.002的时间间隔作为绝对时间没有意义,只有相对的时间。
我将向sharppcap添加一个单元测试,以验证数据包timeval是否已经存在。