gpt4 book ai didi

c - SO_TIMESTAMP 套接字选项使用哪个时钟?

转载 作者:行者123 更新时间:2023-12-03 09:51:07 26 4
gpt4 key购买 nike

我每 0.1 秒从 TCP 服务器(机器人发送其状态)接收消息流。我不能保证我调用 recvmsg 每 0.1 秒,所以我想在这些收到的消息上有一个时间戳,这样当我 recvmsg我知道我是否刚刚收到它们,或者它们是否已经在缓冲区中放置了足够长的时间以至于过时了,我应该调用 recvmsg直到我读到最近的一条消息。

首先,哪个clock struct timespec SO_TIMESTAMP 时间戳使用?我在谷歌上找到了指向 CLOCK_REALTIME 的资源, 但它们已经有 10 年左右的历史了,因此它们可能已经过时了。

我应该调用所有时间函数中的哪一个来获得与时间戳相当的时间?

是否可以使用 CLOCK_BOOTTIME以避免连续性问题?


我错了。我混了SO_TIMESTAMP (使用 struct timeval )与 SO_TIMESTAMPNS (使用 struct timespec )( SO_TIMESTAMPNS 似乎不可用)。

同时 SO_TIMESTAMPNS根据文档似乎不可用,当我 #include <sys/socket.h>我把它定义为 35 .

最佳答案

它使用CLOCK_REALTIME

噗。所以:在 sock_setsockopt 中提到了 SO_TIMESTAMP .从那里我跳到 sock_enable_timestamp .但在该函数的正上方是 sock_get_timestamp and sock_get_timestampns .他们使用 ktime_get_real .只是为了检查 sock_get_timestamp 用于 inet_ioctl in af_inet.c .只是为了疼我研究了documentation on ktime accessors ktime_get_realCLOCK_REALTIME 相同。而ktime_get_real也被__net_timestamp in socket buffer使用了

关于c - SO_TIMESTAMP 套接字选项使用哪个时钟?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60971556/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com