利用vc实现time协议

利用vc实现time协议

ID:10881842

大小:49.60 KB

页数:10页

时间:2018-07-08

利用vc实现time协议_第1页
利用vc实现time协议_第2页
利用vc实现time协议_第3页
利用vc实现time协议_第4页
利用vc实现time协议_第5页
资源描述:

《利用vc实现time协议》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、计算机网络课程设计院别计算机与通信工程学院专业计算机科学与技术班级学号4090303姓名牛智伟指导教师王和兴成绩2012年6月29日利用VC实现TIME协议一、设计要求TIME协议是基于TCP/IP的应用层协议,如果一台PC机希望精确地设置自己的日期和时间,它可以访问网络上运行TIMESERVER程序的服务器,可参阅RFC868[6-5]。二、TimeProtocol(RFC-868)协议TimeProtocol(RFC-868)协议是一种较简单的协议。此协议提供了一个独立于站点的,机器可读的日期和时间信息。时间服务返回的是以秒数,是从1900年1月1日午夜到现在的

2、秒数。这个协议可以工作在TCP和UDP协议下。下面是通过TCP协议工作的时间协议的工作过程:这里S代表服务器,C代表客户。S:检测端口37U:连接到端口37S:以32位二进制数发送时间U:接收时间U:关闭连接S:关闭连接如果服务器不能决定现在是什么时间,服务器会拒绝连接或不发送任何数据而直接关闭连接。下面我们看看使用UDP协议的情况:这里S代表服务器,C代表客户。S:检测端口37U:发送一个空数据报到端口37S:接收这个空数据报S:发送包含32位二进制数(用于表示时间)的数据报U:接收时间数据报如果服务器不能决定现在是什么时间,服务器会抛弃接收到的数据报而不作出任何

3、应答。时间是由32位表示的,是自1900年1月1日0时到当前的秒数,我们可以计算一下,这个协议只能表示到2036年,然后就不能用了。三、代码#include"stdafx.h"#include#include#pragmacomment(lib,"ws2_32.lib")//网络对时程序#defineNET_TIME_PORT37#defineTIMEOUT_CONNECT5#defineTIMEOUT_RECEIVE1char*sever[]={"129.132.2.21","129.6.15.28","129.6.15.2

4、9","132.163.4.101","132.163.4.102","132.163.4.103","128.138.140.44","192.43.244.18","131.107.1.10","66.243.43.21","216.200.93.8","208.184.49.9","207.126.98.204","207.200.81.113","205.188.185.33",NULL};BOOLGetRemoteTime(char*szSever,unsignedlong&ulTime){//使用TCP协议创建一个套接字af指定网络地址类型SOCK_ST

5、REAM会话套接字SOCKETsock=socket(AF_INET,SOCK_STREAM,0);if(sock==INVALID_SOCKET){returnFALSE;}unsignedlongflag=1;if((ioctlsocket(sock,FIONBIO,&flag)==0)){sockaddr_inseverAddr;severAddr.sin_family=AF_INET;severAddr.sin_port=htons(NET_TIME_PORT);severAddr.sin_addr.S_un.S_addr=inet_addr(szSever

6、);connect(sock,(sockaddr*)&severAddr,sizeof(severAddr));structfd_setmask;FD_ZERO(&mask);FD_SET(sock,&mask);structtimevaltimeout;timeout.tv_sec=TIMEOUT_CONNECT;timeout.tv_usec=0;if(select(0,NULL,&mask,NULL,&timeout)==1){timeout.tv_sec=TIMEOUT_RECEIVE;if(select(0,&mask,NULL,NULL,&timeout

7、)==1){if(recv(sock,(char*)&ulTime,4,0)==4){ulTime=ntohl(ulTime);closesocket(sock);returnTRUE;}}}}closesocket(sock);returnFALSE;}voidMySetTime(unsignedlongulTime)//MySetTime函数的功能是将位值转换为系统时间,并设置系统时间{FILETIMEft;SYSTEMTIMEst;st.wYear=1900;st.wMonth=1;st.wDay=1;st.wHour=0;st.wMinute=0;st.

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。