为UDP数据包加时间戳

时间:2014-04-04 20:43:47

标签: c++ c sockets unix

我正在制作一个需要订购消息的UNIX应用程序,我需要为所有传出的数据包添加时间戳。我可以使用time.h中定义的函数,只是将时间戳附加到数据包,但似乎Linux已经在套接字API中提供了一个时间戳选项。什么是对UDP数据包加时间戳的最佳方法?

1 个答案:

答案 0 :(得分:2)

您可以在套接字上设置的特定于Linux的时间戳选项不会按照您的想法执行。简而言之,它们会导致skbuff个对象被赋予时间戳。目的是获得有关数据包何时实际发送以及何时到达的准确时间戳。即这些邮票是本地元数据。

如果您需要实际通信协议中的时间戳,则必须将其自己添加为数据包格式的另一个字段。

由于你说这是"订购消息" ,如果这是唯一的目的,最好不要用时间标记数据包,而是用递增序列号。增加序列号不仅可以建立顺序,还可以帮助检测丢失的数据包,时间戳不会这样做。