C++ 获取ntp时间服务器时间 解析之后多了70年!
部分代码如下:
为何时间会正好多出70年;
WSADATA Ws;
if (WSAStartup(MAKEWORD(2,2), &Ws) != 0 )
{
cout<<"Init Windows Socket Failed::"<<GetLastError()<<endl;
return;
}
SOCKET s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (s == INVALID_SOCKET)
{
std::cout<<"create socket error"<<std::endl;
return;
}
sockaddr_in servAddr;
memset(&servAddr,0,sizeof(sockaddr_in));
servAddr.sin_family = AF_INET;
servAddr.sin_port = htons(PORT);
servAddr.sin_addr.S_un.S_addr = inet_addr(IP_ADDRESS);
if (SOCKET_ERROR == connect(s, (sockaddr *)&servAddr, sizeof(servAddr)))
{
std::cout<<"connect socket error"<<std::endl;
return;
}
ULONG ulTime = 0;
int nRecv = recv(s, (char *)&ulTime, sizeof(ulTime), 0);
std::cout<<ulTime<<std::endl;
ulTime = ntohl(ulTime);
closesocket(s);
std::cout<<ulTime<<std::endl;
cout<<"----------------------"<<endl;
time_t timep = ulTime;
struct tm *t;
t = gmtime(&timep);
printf("%04d-%02d-%02d %02d:%02d:%02d\n"
, t->tm_year + 1900
, t->tm_mon +1
, t->tm_mday
, t->tm_hour +8
, t->tm_min
, t->tm_sec);