C++设置系统时间及系统时间网络更新的方法
本文实例讲述了C++设置系统时间及系统时间网络更新的方法。分享给大家供大家参考。具体实现方法如下:
//根据返回的时间设置系统时间
voidsetTimeFromTP(ULONGulTime)
{
FILETIMEft;
SYSTEMTIMEst;
//将基准时间转换成windows文件时间
st.wYear=1900;
st.wMonth=1;
st.wDay=1;
st.wHour=0;
st.wMinute=0;
st.wSecond=0;
st.wMilliseconds=0;
SystemTimeToFileTime(&st,&ft);
LONGLONG*pLLong=(LONGLONG*)&ft;
*pLLong+=(LONGLONG)10000000*ulTime;
FileTimeToSystemTime(&ft,&st);
::SetSystemTime(&st);
}
voidmain()
{
CInitSockinitSock;
SOCKETs=::socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if(s==INVALID_SOCKET)
{
printf("socketerror...");
return;
}
sockaddr_inservAddr={0};
servAddr.sin_family=AF_INET;
servAddr.sin_port=::htons(37);
servAddr.sin_addr.S_un.S_addr=::inet_addr("69.25.96.13");//别用210.72.145.44这个IP,这是天朝的常TMD不返回值
if(SOCKET_ERROR==::connect(s,(sockaddr*)&servAddr,sizeof(servAddr)))
{
printf("connecterror..");
return;
}
//接收时间
ULONGulTime=0;
intnRecv=::recv(s,(char*)&ulTime,sizeof(ulTime),0);
if(nRecv>0) //收到数据
{
ulTime=::ntohl(ulTime);
setTimeFromTP(ulTime);
}
else
{
printf("recverror...");
return;
}
::closesocket(s);
printf("*******************************");
getchar();
}
希望本文所述对大家的C++程序设计有所帮助。