我正在使用可用的c程序here来接收以太网帧。我想知道框架的确切到达时间并打印出来。到达时间是否可用作程序使用的一个网络结构中的字段,或者如何推断帧的到达时间?
答案 0 :(得分:0)
通过标准套接字API调用获得的帧没有附加“到达时间”。根据您需要的时间分辨率,您可以在clock_gettime()
电话成功后立即致电recv()
以获得估算值。
请注意,这不是物理层的帧到达时间,而是您的进程接收它的时间。因此,如果它在您的进程检索它之前一直坐在驱动程序缓冲区中,那么时间可能会有所不同。它还受到调度延迟和其他因素的影响,因此它可能会偏离数百微秒,可能会更大,具体取决于系统负载。
另请注意,打印时间也需要时间否则将花费在缓冲区上。数据包可以通过以太网到达的速度比在控制台上打印的速度快得多。如果没有正确完成,打印到达时间的行为可能会完全破坏您未来的到达时间估计值。