正文引用来源: http://www.eepw.com.cn/article/257114.htm
/*修改本地时间*
intset _ local _ time (struct NTP _ packet * pnew _ time _ packet ) )。
{
structtimevaltv;
TV.TV _ sec=pnew _ time _ packet-transmit _ timestamp.coarse-Jan _ 1970;
TV.TV _ usec=usec (pnew _ time _ packet-transmit _ timestamp.fine );
日期返回设置(电视,空);
}
intmain () )
{
intsockfd、rc;
structaddrinfohints,*res=NULL;
struct NTP _ packet new _ time _ packet;
短信(hints,0,sizeof ) hints );
hints.ai_family=AF_UNSPEC;
hints.ai_socktype=SOCK_DGRAM;
hints.ai_protocol=IPPROTO_UDP;
getaddrinfo (调用函数并获取地址信息) /
RC=getaddrinfo(NTP_server_IP,NTP_PORT_STR,hints,res );
if(RC!=0)
{
perror(getaddrinfo;
返回1;
}
/*创建套接字*
sockfd=socket(RES-AI_family,res-ai_socktype,res-ai_protocol );
是if(sockfd0)
{
perror (套接字);
返回1;
}
/*调用获取NTP时间的函数*
if(get_NTP_time(sockfd,res,new_time_packet ) )
{
/*调整当地时间*
if (! set_local_time(new_time_packet ) )
{
printf (NTP客户端成功! n );
}
}
关闭(sockfd;
返回0;
}
为了更好地看到程序的效果,请使用date命令修改系统时间,然后运行实例程序。 运行结束后查看系统时间,可以看到已返回到正确的系统时间。 具体运行结果如下。
$date-s2001-01-011336000:00
2001年01月01日星期一01:00:00EST
$日期
2001年01月01日星期一01:00:00EST
$./ntp
NTP客户端success!
$日期
现在可以显示当前的正确日期和时间了!