0
我想实现我自己的NTP客户端。我可以向NTP服务器发送请求,并收到回复。响应中的所有内容看起来都是正确的,除了四个错误的时间戳之外。我在wireshark中查看了NTP服务器发送的消息,并且一切正确。例如,这是数据Wireshark是从基准时间戳自定义NTP客户端得到错误的时间戳
D8 C6 36 C3 AE 40 00 00
显示这是我的程序得到的Refernece时间戳
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);
有人可以帮助我找出其中的事情出错了?
您是否确认收到了整个时间戳?将'buffer'初始化为'{0}'使未初始化的元素更清晰。 – molbdnilo 2015-04-01 10:19:20
@molbdnilo我很确定,因为我得到了所有四个时间戳的正确开始。或者,也许我只是得到每个时间戳的90%,但这似乎不太可能 – 2015-04-01 10:22:25