//*******************************************************************

//Time Protocol是一种非常简单的应用层协议。它返回一个未格式化的32位二进制数字,

//这个数字描述了从1900年1月1日午夜到现在的秒数。服务器在端口37监听协议请求,以

//TCP/IP或者UDP/IP格式返回响应。将服务器的返回值转化为本地时间是客户端程序的责任。

//这里使用的时间服务器是129.132.2.21,更多的服务器地址在“http://tf.nist.gov/service/time-servers.html

//网站列出。

//*******************************************************************

#include

#include

usingnamespacestd;

#pragmacomment(lib,"ws2_32")

voidSetTimeFromTP(ULONGulTime)

{

//Windows文件时间是一个64位的值,它是从1601年1月1日中午12:00到现在的时间间隔,

//单位是1/10000000秒,即1000万分之1秒

FILETIMEft;

SYSTEMTIMEst;

st.wYear=1900;

st.wMonth=1;

st.wDay=1;

st.wHour=0;

st.wMinute=0;

st.wSecond=0;

st.wMilliseconds=0;

SystemTimeToFileTime(&st,&ft);

//然后将TimeProtocol使用的基准时间加上已经逝去的时间,即ulTime

LONGLONG*pllLong=(PLONGLONG)&ft;

//注意文件时间单位是1/10000000秒,即1000万分之1秒

*pllLong+=(LONGLONG)10000000*ulTime;

//再将时间转化回来,更新系统时间

FileTimeToSystemTime(&ft,&st);

SetSystemTime(&st);

}

intmain(intargc,char**argv)

{

WSADATAwsaData;

WSAStartup(WINSOCK_VERSION,&wsaData);

SOCKETs=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);

if(INVALID_SOCKET==s)

{

cout<

return0;

}

SOCKADDR_INservAddr;

servAddr.sin_family=AF_INET;

servAddr.sin_port=htons(37);

servAddr.sin_addr.S_un.S_addr=inet_addr("129.132.2.21");

if(-1==connect(s,(PSOCKADDR)&servAddr,sizeof(servAddr)))

{

cout<

return0;

}

//等待接收时间协议返回,最好使用异步IO,以便设置超时

ULONGulTime=0;

intiRecv=recv(s,(char*)&ulTime,sizeof(ulTime),0);

if(iRecv>0)

{

ulTime=ntohl(ulTime);

SetTimeFromTP(ulTime);

cout<

}

else

{

cout<

}

shutdown(s,SD_RECEIVE);

closesocket(s);

WSACleanup();

return0;

}

c语言 程序延时 校准,c语言实现系统时间校正工具代码分享相关推荐

  1. c语言修改windows系统时间,c语言实现系统时间校正工具代码分享

    //******************************************************************* //Time Protocol是一种非常简单的应用层协议.它 ...

  2. c语言 程序延时 校准,Windows下C语言API修改系统时间,附自动校准时间源码

    C语言Windows时钟的结构体如下: typedef struct _SYSTEMTIME { WORD wYear;              /*年*/ WORD wMonth;         ...

  3. 8255a初始化c语言程序,8255A的c语言程序.doc

    8255A的c语言程序 8255A的c语言程序 [实例24]用8243扩展I/O端口 #include sbit ContrBit0=P1^0; sbit ContrBit1=P1^1; sbit C ...

  4. 单片机 中断秒表 c语言程序,51单片机c语言的秒表设计.doc

    51单片机c语言的秒表设计.doc 课程设计报告 基于AT89C51单片机的秒表设计 院 系 电子信息工程学院 专 业 电子信息工程 1 姓 名 摘 要 本设计是设计一个单片机控制的多功能秒表系统. ...

  5. 怎么用centos7运行c语言程序_写C语言程序,如何提升程序运行效率?我的一点经验分享给你们!...

    在编写C语言程序后,经常需要对源码进行优化,以提高程序的运行效率,下面简述几个常用的优化技巧以供大家参考: 1.C于代码在程序中的优化 现在的C编译器会自动对代码进行优化,但这些优化是对执行速度和代码 ...

  6. 单纯形 c语言 程序,单纯形法完全c语言程序

    单纯形法完全c语言程序 更新时间:2017/2/8 13:37:00  浏览量:566  手机版 单纯形法完全c语言程序,能运行 #include "math.h" #includ ...

  7. 程序设计基础(c语言),程序设计基础(C语言)

    <程序设计基础(C语言)>由会员分享,可在线阅读,更多相关<程序设计基础(C语言)(26页珍藏版)>请在人人文库网上搜索. 1.程序设计基础(C语言),东北大学高级语言程序设计 ...

  8. c语言程序链接过程,C语言简明教程(二):C程序编译链接过程和实例对照详解...

    不像高级编程语言,在C语言开发中,了解其编译链接过程显得相对重要,因为C语言是较为底层的语言,很多时候我们调试C程序或者解决其它问题都可能会涉及到C编译链接的相关知识,例如编译动态库或者静态库.下面我 ...

  9. c语言程序改错例题,C语言程序改错习题

    C语言程序改错习题 行动是通向成功的唯一途径.以下是小编为大家搜索整理的C语言程序改错习题,希望能给大家带来帮助!更多精彩内容请及时关注我们应届毕业生考试网! 在考生文件夹下,给定程序MODI.C的功 ...

最新文章

  1. 在Ubuntu 14.04 64bit上生成ATS本地离线文档
  2. 七天学习计划_c#_[2][3][4][5]委托、事件、委托与事件的区别、泛型委托、Func\Action\predicate
  3. highcharts常用配置说明
  4. 用VB.net开发.NET Micro Framework
  5. 神经网络 | BP神经网络介绍(附源代码:BP神经网络-异或问题)
  6. centos7;windows下安装和使用spice
  7. Angular应用带参数的路由实现
  8. 随手看的一本书《java微服务》,测试成功了其中的第一个样例
  9. P3651-展翅翱翔之时【贪心,环套树】
  10. poj2965 The Pilots Brothers' refrigerator
  11. 易助erp系统服务器安装,易助ERP系统操作培训教程
  12. java 类文件_Java类文件概述
  13. java开发利用jacob将word转pdf
  14. 遥感影像数据下载网站整理
  15. 软考c语言题库,【中级】软考题库每日一练|4.4
  16. js 56个民族 数据
  17. 看咪蒙真的有那么low吗?
  18. Low-poly低面建模(低像素多边形)
  19. 关于时间复杂度的详解
  20. 两条线段的交点 交点

热门文章

  1. 无线网络:家庭 WiFi 的安全隐患及实用的防范建议
  2. 20道JS原理题助你面试一臂之力!
  3. MYSQL存储引擎笔记
  4. html定义字体纵向对齐,HTML5 Canvas的文本如何实现垂直对齐
  5. android 飞框动画,AndroidTV中实现飞框选中效果
  6. qt按钮禁用和激活禁用_为什么试探法只是经验法则:禁用按钮的情况
  7. SEE Conf: Umi 4 设计思路文字稿
  8. 写给前端的算法进阶指南,我是如何两个月零基础刷200题 等推荐
  9. Android 中文 API (16) —— AnalogClock
  10. Maven组件通过命令上传本地和私有仓库