C - TCP 时间戳,返回回复所需的记录时间



我正在尝试计时(秒,毫秒,微秒)来自服务器的回复,我的客户端正在向服务器发送一个小数据包,服务器正在回复客户端。现在我想要的是一种在从客户端发送到服务器的数据包中插入时间戳的方法,服务器将其自己的时间戳附加到数据包并将其返回给客户端。当客户端收到该数据包时,它会找到两个时间之间的差异,并将此差异作为往返时间 + 服务器填充时间返回。

我的问题是我知道有一个带有 tcp 套接字的时间戳选项,但网络上没有它的示例。如果有人能引导我朝着正确的方向前进,那就太好了。

谢谢操作系统 : 乌班图 11.10语言 : C插座 : BSD

客户端是单线程的吗?如果是这样,并且如果您只对测量往返时间+处理时间感兴趣,您所要做的就是测量客户端发送数据包并接收与之对应的响应所花费的时间。因此,只需在客户端执行发送之前获取以毫秒为单位的时间,然后在客户端收到响应后获取以毫秒为单位的时间。这两者的区别是往返时间+处理时间。当然,这仅在客户端是单线程时才有效(即它执行发送,然后立即调用recv并等待服务器的响应)

如果您对性能测量感兴趣,最好安装 wireshark http://www.wireshark.org/并查看数据包日志。这将为您提供准确的计时,而无需更改您正在测量的代码或堆栈。

取决于你想进入兔子洞的深度......

如果要专门使用 TCP 数据包(如标签中),最直接的方法是将数据包从客户端发送到服务器,有效负载仅包含当前时间戳。当服务器收到数据包时,将服务器的时间戳附加到有效负载并将其返回给客户端。

确保两个客户端/服务器也都是时间同步的。

最新更新