Пользовательский NTP-клиент получает неправильные метки времени

Я пытаюсь реализовать свой собственный клиент NTP. Я могу отправить запрос на NTP-сервер и получить ответ. Все в ответе выглядит правильно, за исключением четырех неправильных отметок времени. Я посмотрел сообщение, отправленное с NTP-сервера в Wireshark, и там все правильно. Например, это данные wireshark, отображаемые из Reference TimeStamp

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);

Может ли кто-нибудь помочь мне понять, где что-то идет не так?

0

Решение

Я понял, что случилось. Я забыл преобразовать метки времени, полученные из сетевого байтового порядка, в хостовый.

0

Другие решения


По вопросам рекламы [email protected]