我正在尝试将服务器时间与客户端时间同步,我获得了获取服务器时间的代码,如下所示。如果我在服务器上运行它,则在客户端登录时。我将向客户端发送时间,但是如何将“客户端”系统时间更改为从服务器发送的时间。

我搜索了setenv之类的东西,但是如何实际上改变Linux C++中的时间呢?

使用下面的代码,我可以获得当前时间:

/* localtime example */
#include <stdio.h>
#include <time.h>

int main ()
{
  time_t rawtime;
  struct tm * timeinfo;

  time ( &rawtime );
  timeinfo = localtime ( &rawtime );
  printf ( "Current local time and date: %s", asctime (timeinfo) );

  return 0;
}

最佳答案

Linux(或Unix,或Posix)系统从unix epoch开始测量时间。最低层(与时间相关的syscalls和内核)实际上没有涉及任何时区。时区是通过localtime(3)strftime(3)等功能实现的库功能。

另请阅读time(7)手册页。

您确实想使用NTP protocol(使用ntpdchronyntpdate ....)或至少rdate(但最好是NTP)来同步时间(在本地和远程计算机上)。

查询时间的系统调用为gettimeofday(2)time(2)clock_gettime(2)CLOCK_REALTIME
您可以使用settimeofday(2)adjtimex(2)系统调用来设置时间。这通常需要root特权。

09-04 07:36
查看更多