- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
Linux 内核提供了几种方法来获取接收的(SO_TIMESTAMP、SO_TIMESTAMPNS、SO_TIMESTAMPING)或发送的(SO_TIMESTAMPING)数据包的时间戳。
内核文档:https://www.kernel.org/doc/Documentation/networking/timestamping.txt
有什么方法可以将它与 Python 一起使用吗?我在 Python 源代码中没有看到任何 SO_TIMESTAMP 常量。尝试了 3.6.2 和 GitHub master 分支。
现在,我只能使用 SIOCGSTAMP,它为我提供了上次接收到的数据包的时间戳,而发送数据包的时间戳似乎没有任何可用信息。
最佳答案
最后,我已经能够像这样获得 SO_TIMESTAMPNS 值:
SO_TIMESTAMPNS = 35
s = socket.socket(socket.AF_PACKET, socket.SOCK_RAW, socket.htons(3))
s.setsockopt(socket.SOL_SOCKET, SO_TIMESTAMPNS, 1)
raw_data, ancdata, flags, address = s.recvmsg(65535, 1024)
ancdata[0][2] 是作为 timespec(ulong, ulong) 的硬件时间戳。
可以在 Linux 上运行,但不能在 Mac OS X 上运行。未在 Windows 上测试。
关于Python 网络时间戳(SO_TIMESTAMP、SO_TIMESTAMPNS、SO_TIMESTAMPING),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46302308/
Linux 内核提供了两个套接字选项来检索传入网络数据包的软件时间戳:SO_TIMESTAMP和 SO_TIMESTAMPING与 SOF_TIMESTAMPING_RX_SOFTWARE | SOF
Linux 内核提供了几种方法来获取接收的(SO_TIMESTAMP、SO_TIMESTAMPNS、SO_TIMESTAMPING)或发送的(SO_TIMESTAMPING)数据包的时间戳。 内核文档
我每 0.1 秒从 TCP 服务器(机器人发送其状态)接收消息流。我不能保证我调用 recvmsg 每 0.1 秒,所以我想在这些收到的消息上有一个时间戳,这样当我 recvmsg我知道我是否刚刚收到
在socket man page中可以看出,可以使用 SO_TIMESTAMP 和 setsockopt 来测量 Linux 内核将接收到的网络数据包传递给用户空间所花费的时间。 此处对此功能有很好的
我是一名优秀的程序员,十分优秀!