c++ - UDP 数据包时间戳

标签 c++ c sockets unix

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

最佳答案

您可以在套接字上设置的特定于 Linux 的时间戳选项不会执行您认为的操作。简而言之,它们导致 skbuff 对象被赋予时间戳。目的是获得有关数据包实际发送和到达时间的准确时间戳。 IE。这些标记是本地元数据。

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

既然你说这是“订购消息”,如果这是唯一的目的,那么最好不要用时间来标记数据包,而是用递增的序列号来标记数据包。递增序列号不仅可以建立顺序,还可以帮助检测丢失的数据包,而时间戳则无法做到这一点。

关于c++ - UDP 数据包时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22872660/

相关文章:

c - WSAStringToAddress 错误 10022/从控制台参数读取 IPv6

c++ - 关于 recv 和读取缓冲区 - C Berkeley Sockets

python - pyinstaller导入错误: No module name '_socket'

c - Windows 线程池

c - 如何在 Oracle 中对 XMLType 列使用 OCI?

数组迭代中的 CPU 空间缓存位置

c++ - C中的内存访问优化

c++ - 如何正确编写指针函数声明?

c++ - 为 Bazel 工具链指定 sysroot

c++ - 移动设备的最佳加密库?