首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

C++ 获取ntp时间服务器时间 解析以后多了70年

2013-03-21 
C++ 获取ntp时间服务器时间 解析之后多了70年!部分代码如下:为何时间会正好多出70年;WSADATAWsif (WSASta

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);


[解决办法]
time_t实际上是从1970年1月1日开始的秒数
[解决办法]
NTP的时间戳表示的是距离1900年1月1日0:0:0的秒数。

热点排行