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