我正在尝试使用Berkeley套接字API在C中创建一个简单的SNTP客户端,但是我无法从响应消息中计算调整后的时间。我是从RFC2030得到的。
收到服务器回复后,客户端确定目的地 时间戳变量作为到达时间根据其时钟输入 NTP时间戳格式。下表总结了这四个 时间戳。
- Originate Timestamp(T1):客户端发送的时间请求
- 接收时间戳(T2):服务器收到的时间请求
- 传输时间戳(T3):服务器发送的时间回复
- 目的地时间戳(T4):客户收到的时间回复
据我所知,我可以通过获取客户的时间并将时间偏移 t 添加到其中来计算调整后的当前时间,时间偏移定义为
t = ((T2 - T1) + (T3 - T4)) / 2
我需要知道 T4 进行此计算,但它不是数据包消息的一部分。我怎样才能获得这个时间戳?
答案 0 :(得分:0)
从你发布的这一点开始我相信你应该能够以同样的方式获得T4(也就是说,当它处理特定阶段时,它们都是根据本地机器的时间)请求)。
<击>
Originate Timestamp(T1):客户发送的时间请求
目标时间戳(T4):客户端收到的时间回复
击>
在收到响应数据包后立即使用类似C gettimeofday function的内容创建自己的时间戳是否足够?