0

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

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

谢谢 操作系统:ubuntu 11.10 语言:C 套接字:BSD

4

3 回答 3

1

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

于 2012-04-19T18:34:51.653 回答
0

取决于你想去的兔子洞有多深......

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

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

于 2012-04-19T18:20:00.283 回答
0

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

于 2012-04-19T18:16:30.520 回答