自定义 NTP 客户端获取错误的时间戳
Custom NTP client getting wrong timestamps
我正在尝试实现我自己的 NTP 客户端。我可以向 NTP 服务器发送请求并得到响应。响应中的所有内容看起来都是正确的,除了四个错误的时间戳。我已经在 wireshark 中查找了从 NTP 服务器发送的消息,一切都是正确的。例如,这是 wireshark 从参考时间戳
显示的数据
d8 c6 36 c3 ae 40 00 00
这就是我的程序获得的参考时间戳
d8 c6 3f 1d b0 00 00 00
我从 NTP 服务器接收数据的代码如下所示:
addr_len = sizeof(their_addr);
uint8_t buffer[64];
memset(&buffer, 0, sizeof(buffer));
recvfrom(sockfd, (char*)buffer, sizeof(buffer), 0, (sockaddr*)&their_addr, &addr_len);
谁能帮我找出哪里出了问题?
我知道出了什么问题。我忘记将从网络字节顺序收到的时间戳转换为主机字节顺序。
我正在尝试实现我自己的 NTP 客户端。我可以向 NTP 服务器发送请求并得到响应。响应中的所有内容看起来都是正确的,除了四个错误的时间戳。我已经在 wireshark 中查找了从 NTP 服务器发送的消息,一切都是正确的。例如,这是 wireshark 从参考时间戳
显示的数据d8 c6 36 c3 ae 40 00 00
这就是我的程序获得的参考时间戳
d8 c6 3f 1d b0 00 00 00
我从 NTP 服务器接收数据的代码如下所示:
addr_len = sizeof(their_addr);
uint8_t buffer[64];
memset(&buffer, 0, sizeof(buffer));
recvfrom(sockfd, (char*)buffer, sizeof(buffer), 0, (sockaddr*)&their_addr, &addr_len);
谁能帮我找出哪里出了问题?
我知道出了什么问题。我忘记将从网络字节顺序收到的时间戳转换为主机字节顺序。