NTP服务器总是返回相同的错误日期(窗口)

NTP server return always same - wrong date (windows)

本文关键字:日期 错误 窗口 服务器 返回 NTP      更新时间:2023-10-16

我想从NTP服务器获取时间。我发现了很多例子,但在我的例子中,我从服务器得到的日期总是相同的。我不知道怎么了。我想知道当前的日期和时间,但我没有。

unsigned char buf[1024];
...
tmit=ntohl((time_t)buf[4]); // get transmit time
//tmit=ntohl((time_t)buf[10]); //try this too
time_t tempa = tmit;
printf("Recieve time: %s",ctime(&tempa));
...

这是我的输出:

Recieve time: Thu Jan 01 01:00:00 1970

我不知道为什么收到这个日期,或者为什么重新计算到错误的日期。问题出在哪里?我在windows上使用c++。

tmit=ntohl((time_t)buf[4]); // get transmit time

您正在将单个字符(buf[4])强制转换为time_t。由于unsigned char只能有256个可能的值,因此转换为time_t只能有256种可能的值。这不可能是对的。