方式1 :

#include <WinSock2.h>
#include <Windows.h>
#pragma comment(lib, "WS2_32")  // 链á′接ó到μ?WS2_32.lib     
class CInitSock
{     
public:     
    CInitSock(BYTE minorVer = 2, BYTE majorVer = 2)     
    {     
        // 初3?始ê?化ˉWS2_32.dll     
        WSADATA wsaData;     
        WORD sockVersion = MAKEWORD(minorVer, majorVer);     
        if(::WSAStartup(sockVersion, &wsaData) != 0)     
        {     
            exit(0);     
        }     
    }     
    ~CInitSock()     
    {        
        ::WSACleanup();      
    }     
};
CInitSock initS;
BOOL NistGetTime(LPFILETIME OutTime)
{
    BOOL bOk;
    struct hostent *host;
    bOk = FALSE;
    if (host = gethostbyname("time.nist.gov"))
    {
        SOCKET s;
        in_addr ia;
        CHAR IpText[32];
        memcpy(&ia, host->h_addr, host->h_length);
        lstrcpyA(IpText, inet_ntoa(ia));
        s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
        if (s != INVALID_SOCKET)
        {
            sockaddr_in sac;
            memset(&sac, 0, sizeof(sac));
            sac.sin_family = AF_INET;
            sac.sin_port = htons(37);
            sac.sin_addr.s_addr = inet_addr(IpText);
            if (connect(s, (sockaddr*)&sac, sizeof(sac)) == 0)
            {
                ULONG nTime;
                if (recv(s, (PCHAR)&nTime, sizeof(nTime), 0) == sizeof(nTime))
                {
                    LONGLONG llt;
                    nTime = ntohl(nTime);
                    llt = 0x014F373BFDE04000;//1900.1.1
                    llt += LONGLONG(nTime) * 10000000;
                    memcpy(OutTime, &llt, sizeof(FILETIME));
                    bOk = TRUE;
                }
            }
            closesocket(s);
        }
    }
    return bOk;
}
int _tmain(int argc, _TCHAR* argv[])
{
    FILETIME ft;
    CInitSock initS;
    NistGetTime(&ft);
    SYSTEMTIME st;
    FileTimeToSystemTime(&ft,&st);
    return 0;
}


方式2 mfc:

CTime NistGetTime()
{
//时间同步
CSocket sockClient;
TIME_ZONE_INFORMATION tzinfo;
DWORD dwStandardDaylight;
long bias,sminute,shour;
vector <string> vi;
string strServer;
BOOL ret;
//将时间服务器放在一个VECTOR中。
strServer = "time.nist.gov";
vi.push_back(strServer); 
strServer = "time-a.nist.gov";
vi.push_back(strServer); 
strServer = "time-b.nist.gov";
vi.push_back(strServer); 
strServer = "time-nw.nist.gov";
vi.push_back(strServer); 
strServer = "nist1.nyc.certifiedtime.com";
vi.push_back(strServer); 
strServer = "time-b.nist.gov";
vi.push_back(strServer); 

//初始化CSocket
AfxSocketInit();
sockClient.Create();   //创建socket


dwStandardDaylight = GetTimeZoneInformation(&tzinfo); //获取时区与UTC的时间差 应该返回-8
bias = tzinfo.Bias;
if (dwStandardDaylight == TIME_ZONE_ID_INVALID) //函数执行失败
{
return; 
}
if (dwStandardDaylight == TIME_ZONE_ID_STANDARD) //标准时间有效
bias += tzinfo.StandardBias;

if (dwStandardDaylight == TIME_ZONE_ID_DAYLIGHT) //夏令时间
bias += tzinfo.DaylightBias;

shour = bias/60;
sminute = fmod((float)bias,60);

//循环判断服务器是否连接成功
for (int n=0; n < vi.size(); ++ n)
{
ret = sockClient.Connect(vi[n].c_str(),13);
if (1 == ret)
break;   

}

unsigned char nTime[100] = {0}; //临时接收数据要求足够的大

sockClient.Receive(nTime, sizeof(nTime)); //接收服务器发送来得的数据
sockClient.Close();    //关闭socket

CString strTime;
strTime.Format("%s",nTime);

int first=strTime.Find("-");
int second=strTime.Find("-",first+1);

int tfirst = strTime.Find(":");
int tsecond = strTime.Find(":",tfirst+1);


int hyear=2000+atoi(strTime.Mid(first-2,2));
int hmonth=atoi(strTime.Mid(first+1,2));
int hday=atoi(strTime.Mid(second+1,2));
int hhour=atoi(strTime.Mid(tfirst-2,2))-shour;
int hminute=atoi(strTime.Mid(tfirst+1,2))-sminute;
int hsecond=atoi(strTime.Mid(tsecond+1,2));
CTime temptime(hyear,hmonth,hday,hhour,hminute,hsecond);
return temptime;
}

vc 获取网络时间的更多相关文章

  1. vc 获取当前时间 (zhuan)

    vc 获取当前时间(2010-02-10 11:34:32) http://wenku.baidu.com/view/6ade96d049649b6648d7475e.html 1.使用CTime类 ...

  2. python获取网络时间和本地时间

    今天我们来看一下如何用python获取网络时间和本地时间,直接上代码吧,代码中都有注释. python获取网络时间 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ...

  3. Lua获取网络时间

    作者:ani_di  版权所有,转载务必保留此链接 http://blog.csdn.net/ani_di Lua获取网络时间 网络授时服务是一些网络上的时间服务器提供的时间,一般用于本地时钟同步. ...

  4. QT+VS2013 * 获取网络时间

    使用qt函数获取网络时间 现在Qt Project Setting中的Qt Modules勾选NetWork,再导入头文件我也忘了叫什么了 QStringList net_time; QTcpSock ...

  5. Unity通过NTP获取网络时间

    最初通过qq时间服务器获得时间,经常出现有网络也获取失败的情况. 后面寻找解决办法,查找资料终于发现通过ntp时间服务器获取网络时间的方法.   首先游戏开始获得初始化网络时间,通常只获取一次,其他时 ...

  6. ESP8266- 使用AT指令获取网络时间

    前言:很早就考虑过用 ESP8266 获取网络时间,以前都是用 ESP8266 刷机智云的 Gagent 固件,但无奈现在手头的 ESP-01 的 Flash 只有 1M,实在无法胜任.经过在网络上的 ...

  7. iOS获取网络时间与转换格式

      [NSDate date]可以获取系统时间,但是会造成一个问题,用户可以自己修改手机系统时间,所以有时候需要用网络时间而不用系统时间.获取网络标准时间的方法: 1.先在需要的地方实现下面的代码,创 ...

  8. Android获取网络时间的方法

    一.通过免费或者收费的API接口获取 1.免费 QQ:http://cgi.im.qq.com/cgi-bin/cgi_svrtime 淘宝:http://api.m.taobao.com/rest/ ...

  9. vc 获取当前时间

    1.使用CTime类 CString str; //获取系统时间 CTime tm; tm=CTime:: GetCurrentTime_r(); str=tm.Format("现在时间是% ...

随机推荐

  1. CSS 选择器(转)

    原文转自:http://www.cnblogs.com/xyzhanjiang/p/5447406.html CSS 选择器除了样式表匹配元素时需要用到,在使用 jQuery 等库的时候也可以利用 C ...

  2. Linux----LVM扩容磁盘空间

    Linux系统LVM扩容一个分区相对于Windows来说没有那么直观,但是熟悉命令后,扩容起来也是蛮方便的. 扩容场景如下: [root@rhel06 ~]# df -Th Filesystem Ty ...

  3. [Nginx] - 负载均衡配置

    nginx.conf文件内容: user www www; worker_processes 2; error_log /usr/local/nginx/logs/serror.log crit; p ...

  4. 获取与Url链接相关的信息

    以下结果的值以此示例为基础:http://www.x2y2.com:80/fisker/post/0703/window.location.html?ver=1.0&id=6#imhere j ...

  5. MyXls: 导出Excel的各种设置

    MyXls是一个操作Excel的开源类库,支持设置字体.列宽.行高(由BOSSMA实现).合并单元格.边框.背景颜色.数据类型.自动换行.对齐方式等,通过众多项目的使用表现,证明MyXls对于创建简单 ...

  6. Web 前端开发学习之路(入门篇)

    字数1374 阅读4622 评论0 喜欢49 以前学习过一段时间的web前端开发,整理了一些我看过的/我认为比较好的学习资料(网站.书籍).不要问我为啥没有进阶版,我只是一条产品汪而已,求轻喷.== ...

  7. Activity生命周期(深入理解)

    今天看到一篇大神总结Activity的文章,内容甚为详细,特此转载http://www.cnblogs.com/lwbqqyumidi/p/3769113.html Android官方文档和其他不少资 ...

  8. delphi中webbrowser的用法

    WebBrowser1.GoHome; //到浏览器默认主页 WebBrowser1.Refresh; //刷新 WebBrowser1.GoBack; //后退 WebBrowser1.GoForw ...

  9. c#操作Excel

    Excel是微软公司办公自动化套件中的一个软件,他主要是用来处理电子表格.Excel以其功能强大,界面友好等受到了许多用户的欢迎.在设计应用系统时,对于不同的用户,他们对于打印的需求是不一样的,如果要 ...

  10. POJ 3667 Hotel(线段树 区间合并)

    Hotel 转载自:http://www.cnblogs.com/scau20110726/archive/2013/05/07/3065418.html [题目链接]Hotel [题目类型]线段树 ...