大家都知道Windows自带同步网络时间,我们来实现之

代码如下

#include <winsock2.h>
#pragma comment(lib, "WS2_32")    // 链接到WS2_32.libclass CInitSock
{
public:CInitSock(BYTE minorVer = 2, BYTE majorVer = 2){// 初始化WS2_32.dllWSADATA wsaData;WORD sockVersion = MAKEWORD(minorVer, majorVer);if(::WSAStartup(sockVersion, &wsaData) != 0){exit(0);}}~CInitSock(){ ::WSACleanup(); }
};#include "InitSock.h"
#include <stdio.h>
CInitSock initSock; void SetTimeFromTP(ULONG ulTime)    // 根据时间协议返回的时间设置系统时间
{// Windows文件时间是一个64位的值,它是从1601年1月1日中午12:00到现在的时间间隔,// 单位是1/1000 0000秒,即1000万分之1秒(100-nanosecond )FILETIME ft;SYSTEMTIME st;// 首先将基准时间(1900年1月1日0点0分0秒0毫秒)转化为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);// 然后将Time Protocol使用的基准时间加上以及逝去的时间,即ulTimeLONGLONG *pLLong = (LONGLONG *)&ft;// 注意,文件时间单位是1/1000 0000秒,即1000万分之1秒(100-nanosecond )*pLLong += (LONGLONG)10000000 * ulTime; // 再将时间转化回来,更新系统时间FileTimeToSystemTime(&ft, &st);   SetSystemTime(&st);
}int main()
{SOCKET s = ::socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);if(s == INVALID_SOCKET){printf(" Failed socket() \n");return 0;}// 填写远程地址信息,连接到时间服务器sockaddr_in servAddr; servAddr.sin_family = AF_INET;servAddr.sin_port = htons(37); // 这里使用的时间服务器是129.132.2.21,更多地址请参考http://tf.nist.gov/service/its.htmservAddr.sin_addr.S_un.S_addr = inet_addr("129.132.2.21");if(::connect(s, (sockaddr*)&servAddr, sizeof(servAddr)) == -1){printf(" Failed connect() \n");return 0;}// 等待接收时间协议返回的时间。学习了Winsock I/O模型之后,最好使用异步I/O,以便设置超时ULONG ulTime = 0;int nRecv = ::recv(s, (char*)&ulTime, sizeof(ulTime), 0);if(nRecv > 0){ulTime = ntohl(ulTime);SetTimeFromTP(ulTime);printf(" 成功与时间服务器的时间同步!\n");}else{printf(" 时间服务器不能确定当前时间!\n");}::closesocket(s);return 0;
}

转载于:https://www.cnblogs.com/new0801/archive/2012/09/04/6177716.html

VC++实现获取网络时间相关推荐

  1. 获取网络时间并刷新本地时间(源码2)

    因为上次那个获取网络时间失效了(使用的是37端口),获取网络时间并刷新本地时间(源码1) 所以网上又找了一份代码,使用的是123端口,虽然没有测试成功,这里也做下记录,估计是本机环境问题,过两天再进行 ...

  2. 获取网络时间,在不同时间触发事件

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. 8266获取网络时间

    8266获取网络时间 今天第一次用阿里的博客写点东西感受一下.... sntp.sync("ntp1.aliyun.com",function()print("sync ...

  4. python获取网络时间_python获取网络时间和本地时间

    今天我们来看一下如何用python获取网络时间和本地时间,直接上代码吧,代码中都有注释. python获取网络时间获取网络时间 def getBeijinTime(): ""&qu ...

  5. stm32 + ESP8266 wifi获取网络时间和天气 stm32天气预报

    大家遇到什么什么题,可以私聊我. 近期由于某些原因,玩了一下stm32+WiFi获取网络天气和网络时间.之前一直觉得这个东西会有点难度,其实,做完了才发现,其实那只是想象中的难而已.现在,将这几天的成 ...

  6. Arduino ESP32 获取网络时间并同步本地RTC时钟

    Arduino ESP32 获取网络时间并同步本地RTC时钟 相关篇<Arduino ESP32 最简单直接获取网络时间方法> 在 ArduinoESP32核心支持库当中已经包含相关的获取 ...

  7. CUBEMX配置STM32实现FTP文件传输以及使用SNTP获取网络时间并写入RTC

    CUBEMX配置STM32实现FTP文件传输以及使用SNTP获取网络时间并写入RTC 引言 FTP代码库的移植 Cubemx配置SNTP以及RTC RTC配置方法 SNTP配置方法 FATFS载入RT ...

  8. esp8266获取网络时间

    esp8266获取网络时间 我们使用的手机都有 "使用网络上的时间,自动调整日期和时间" 的功能.如果我们自己做的电子时钟也有自动调整时间的功能,那就很方便,而且不怕时间不准了. ...

  9. 51单片机利用8266获取网络时间

    51单片机利用8266获取网络时间 我现在是成都一所不出名的二本院校大三学生,第一次来到CSDN,趁有时间,把我之前做的项目,其中一个模块拿出来和大家分享,我也是小白,希望提出宝贵意见.OK,废话不多 ...

最新文章

  1. 【转】Jmeter常见问题
  2. java 随机数生成实现_Java中生成随机数的实现方法总结
  3. mysql 左连接b表的一条数据_阿里java架构师教你怎么用mysql怒怼面试官
  4. C语言单链表实现FCFS算法,数据结构与算法复习题(含答案).doc
  5. java创建文件夹和文件_Java创建文件夹与创建文件
  6. ffmpeg 中 swscale 的用法
  7. 完成图书管理系统类图的绘制_中小学图书馆图书管理系统软件
  8. ACM竞赛题目6:身高排序
  9. java libtorrent_[转载]libtorrent安装windows版
  10. 2 ubuntu下geographiclib的使用--经纬度坐标转utm平面坐标及重置ECEF原点
  11. keepalived 健康检查机制说明
  12. 【无线链路】无线发射功率以及接收灵敏度
  13. 计算机中丢失galaxy2d.dll,galaxy2d.dll
  14. 手机网络通过USB共享给台式机电脑
  15. EUI学习之自定义皮肤
  16. 连续最大积 hdu 4567
  17. Java中对象属性的初始化顺序
  18. 04、HTMLCSS-盒子模型
  19. QQ小游戏接入问题:Uncaught TypeError: wx.saveFile is not a function
  20. 1.2 cuda相关常见错误记录(不断更新)

热门文章

  1. java分行符号怎么打_Android string.xml如何输入空格、换行等符号——转义字符
  2. mysql buffer pool_MySQL的查询缓存和Buffer Pool
  3. 超适合新手的Oracle查询语句
  4. 【基础大全】一文带你打好网工路由基础......
  5. 一图看懂云栖大会「云原生」重磅发布
  6. 电子书下载 | 超实用!阿里售后专家的 K8s 问题排查案例合集
  7. 济南电子机械工程学校计算机专业班主任,济南电子机械工程学校庆祝2020年教师节暨表彰大会隆重举行...
  8. sql科学计数法转换为普通数字_一张图读懂Python3的Number(数字)类型
  9. linux字体栅格化,响应式开发---网页的布局方式、媒体查询、栅格化布局、less语言...
  10. 网站服务器被攻击的形式,服务器被攻击的不同表现类型以及应对策略