NTP 服务器 return 始终相同 - 日期错误 (windows)

NTP server return always same - wrong date (windows)

我想从 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 个可能的值。这不对。