- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
用C语言实现在线对时器
用C语言实现的在线对时器 摘要:利用Internet传送标准时间信息称做网络授时。目前网上有很多授时服务器,我们可以用高级语言写一个在线对时器,获取授时服务器上的时间并以此来校对本机时间。本文以C语言为工具,实现了一个简单的在线对时器的开发
关键词:C语言 在线对时
中图分类号:TP302 文献标识码:A 文章编号:1672-3791(2012)10(b)-0006-01
在线对时器的作用是从Internet上获取准确的时间。它的基本设计思想是开发出客户端工具,以此登录到网络上的授时服务器并获取它的准确时间,然后根据这个时间来校对本机的系统时间。下面以C语言为开发工具,介绍一种简单的在线定时器的实现方法
1 登录到授时服务器
Internet上可用的授时服务器很多,这里采用香港的官方授时服务器(IP地址:210.0.235.14)
核心代码如下
//初始化套接字
SOCKET sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
SOCKADDR_IN sa;
sa.sin_family=AF_INET;
//设置套接字连接服务器端的端口(客户端端口由套接字动态分配,无需指定)
sa.sin_port=htons(IPPORT_TIMESERVER);// IPPORT_TIMESERVER是宏,对应的
//值是37,它代表TIMESERVER的端口号
//设置要连接到的授时服务器的IP地址
sa.sin_addr.S_un.S_addr = inet_addr(”210.0.235.14”);
//指定了端口号和IP地址之后,开始登录到授时服务器
connect(sock,(SOCKADDR*)sa,sizeof(sa));
2 接收授时服务器传过来的信息
我们这里采用的授时服务器,返回给客户端的是1900年1月1日0点0分0秒到现在的秒数,是整型数字。而我们将要使用的接收服务器返回的消息的recv函数,它相应的参数是字符指针类型,因此需要进行类型转换,这在代码中将得到体现。具体如下
//定义用来接收返回的时间秒数的变量
unsigned long ulTime = 0;
//使用recv函数接收以秒数代表的当前时间
recv(sock,(char*)ulTime,sizeof(unsigned long),0);
那么这个秒数是多少呢?我们可以将它打印出来看一下:
//定义字符缓冲区
TCHAR buff[256];
//将缓冲区清零
ZeroMemory(buff,sizeof(buff)/sizeof(TCHAR));
将接收的秒数写到定义的缓冲区中
wsprintf(buff,”%i”,ulTime);
//以对话框的形式显示接收的秒数
MessageBox(NULL,buff,TEXT(”以秒数代表的当前时间”),MB_OK);
我们得到的对话框如图1所示
为什么得到的结果明显不对呢?这涉及到字节顺序的问题,也就是说我们的客户机存储的整数的字节顺序和授时服务器不一致,导致传过来的ulTime没有得到正确的还原。这个问题很好解决,我们在将ulTime写到缓冲区之前,使用ntohl函数对ulTime做个处理即可(ulTime=ntohl(ulTime))
3 将秒数表示的时间转换为字符形式的时间
下面我们要将上面得到的一串数字转换为我们看得懂的字符形式的时间,我们用以下代码实现
SYSTEMTIME st;
UINT64 uiCurTime,uiBaseTime, uiResult;
uiBaseTime=((UINT64) HIGHTIME
您可能关注的文档
最近下载
- 工程制图与AutoCAD习题集(第2版)习题答案.pdf
- 第三单元 走向整体的世界 单元测试 (含解析)---2024-2025学年统编版(2019)高中历史必修中外历史纲要下册.pdf VIP
- 超级猩猩健身房品牌手册.pptx VIP
- 消费品以旧换新实施的创新路径与案例.docx VIP
- 智算中心建设项目可行性研究报告.docx
- 消费品以旧换新策略的实施案例分析与借鉴.docx VIP
- 基础护理学课件 14.第十四章 静脉输液与输血.ppt
- 电动港机装卸机械操作工(门机)技能测试题含答案.docx VIP
- 考点21:学会拓展延伸-备战2024年中考语文现代文阅读高频考点精讲课件(全国通用).pptx VIP
- 急性胰腺炎【48页】.pptx VIP
文档评论(0)