转载自:http://blog.sina.com.cn/s/blog_468eb48e01010z3t.html
1、从通过socket获取的时间值为从1900-1-1 00:00:00时间到现在的一个间隔(整型)
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#define IPPORT_TIMESERVER 37
int GetTimeFromServer(u_int64_t *lpdwTime)
{
*lpdwTime = 0;
int bReturn= 0;
int sSock = socket(AF_INET, SOCK_STREAM, 0);
if(0 < sSock)
{
struct sockaddr_in sin;
sin.sin_addr.s_addr = inet_addr("132.163.4.101");//时间服务器ip地址
sin.sin_family = AF_INET;
sin.sin_port = htons(IPPORT_TIMESERVER);
printf( "\n
...Waiting Connection...\n");
if(0 == connect(sSock, (struct sockaddr *) &sin, sizeof(struct sockaddr_in)))
{
printf( "
***Connected***\n");
int iResult, iRead;
for(iRead = 0; iRead < 4; iRead += iResult)
{
iResult = recv(sSock, (char*)lpdwTime + iRead, 4 - iRead, 0);
if(iResult < 1)
break;
}
if(4 == iRead)
{
*lpdwTime = ntohl(*lpdwTime);
bReturn = 1;
}else
printf( "
Error getting time!\n");
}else
printf( "
***Connection Failed***\n");
close(sSock);
}
return bReturn;
}
int main(int argc,char *argv[])
{
u_int64_t dwTime = 0;
GetTimeFromServer(&dwTime);
printf("time : %llu\n",dwTime);
return 0;
}
2、将获取的整型转化为objective-c认识的当前的时间