tcp timestamp,记录返回回复所需的时间

时间:2012-04-19 18:09:42

标签: c linux sockets tcp timestamp

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

我的问题是,我知道tcp套接字有一个时间戳选项,但网上没有示例。如果有人能指导我朝着正确的方向发展,那就太棒了。

由于 操作系统:ubuntu 11.10 语言:C socket:BSD

3 个答案:

答案 0 :(得分:1)

客户端是否是单线程的?如果是这样,如果您只想测量往返时间+处理时间,那么您所要做的就是测量客户端发送数据包并收到与之对应的响应所花费的时间。 因此,只需在客户端发送之前以毫秒为单位获取时间,然后在客户端收到响应后以毫秒为单位获取时间。这两者中的差异是往返时间+处理时间。当然这仅在客户端是单线程时才有效(即它发送一个send然后立即调用recv并等待来自服务器的响应)

答案 1 :(得分:0)

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

答案 2 :(得分:0)

取决于您想要去的兔子洞的深度......

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

确保两个客户端/服务器都已同步。