我正在制作一个 UNIX 应用程序,我需要在其中订购消息,为此我需要为所有传出数据包添加时间戳。我可以使用 time.h 中定义的函数并将时间戳附加到数据包中,但 Linux 似乎已经在套接字 API 中提供了时间戳选项。通常为 UDP 数据包添加时间戳的最佳方法是什么?
最佳答案
您可以在套接字上设置的特定于 Linux 的时间戳选项不会执行您认为的操作。简而言之,它们导致 skbuff
对象被赋予时间戳。目的是获得有关数据包实际发送和到达时间的准确时间戳。 IE。这些标记是本地元数据。
如果在实际的通信协议(protocol)中需要时间戳,则必须自己将它们添加为数据包格式中的另一个字段。
既然你说这是“订购消息”,如果这是唯一的目的,那么最好不要用时间来标记数据包,而是用递增的序列号来标记数据包。递增序列号不仅可以建立顺序,还可以帮助检测丢失的数据包,而时间戳则无法做到这一点。
关于c++ - UDP 数据包时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22872660/