资源描述:
《利用vc实现time协议》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、秦皇岛分权NorthEasternUniversityAtQinHuangDao计算机网络课程设计院别计算机与通信工程学院专业计算机科学与技术班级学号4090303姓名牛智伟指导教师王和兴成绩2012年6月29日利用VC实现TIME协议一、设计要求TIME协议是基于TCP/IP的应用层协议,如果一台PC机希望精确地设置自己的日期和时间,它可以访问网络上运行TIMESERVER程序的服务器,可参阅RFC868[6-5]。二、TimeProtocol(RFC-868)协议TimeProtocol(RFC-868)协议是一种较简单的协议。此协议提供了
2、一个独立于站点的,机器可读的日期和时间信息。时间服务返回的是以秒数,是从1900年1月1日午夜到现在的秒数。这个协议可以工作在TCP和UDP协议下。下面是通过TCP协议工作的时间协议的工作过程:这里S代表服务器,C代表客户。S:检测端口37U:连接到端口37S:以32位二进制数发送时间U:接收时间U:关闭连接S:关闭连接如果服务器不能决定现在是什么时间,服务器会拒绝连接或不发送任何数据而直接关闭连接。下面我们看看使用UDP协议的情况:这里S代表服务器,C代表客户。S:检测端口37U:发送一个空数据报到端口37S:接收这个空数据报S:发送包含32
3、位二进制数(用于表示时间)的数据报U:接收时间数据报如果服务器不能决定现在是什么时间,服务器会抛弃接收到的数据报而不作出任何应答。时间是由32位表示的,是自1900年1月1日0时到当前的秒数,我们可以计算一下,这个协议只能表示到2036年,然后就不能用了。三、代码^include"stdafx.h"^includettincludettpragmacomment(lib,〃ws2_32.lib〃)//网络对时程序ttdefineNET_TIME_PORT37ttdefineTIMEOUTCONNECT5t
4、tdcfincTIMEOUT_RECEIVE1char*sever[]={"129.132.2.21","129.6.15.28","129.6.15.29","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〃,NUL
5、L};BOOLGetRemoteTime(char氺szSever,unsignedlong&ulTime){//使用TCP协议创建一个套接字af指定网络地址类型S0C1CSTREAM会话套接字SOCKETsock=socket(AE_INET,SOCK_STREAM,0):if(sock==INVALIDSOCKET)returnFALSE;unsignedlongflag=1;if((ioctlsocket(sock,FIONBIO,&flag)==0)){sockaddr_inseverAddr;severAddr.sin_family=
6、AF_INET:severAddr.sin_port=htons(NET_TIME_PORT):severAddr.sin_addr.S_un.S_addr=inet_addr(szSever);connect(sock,(sockaddr*)fescvcrAddr,sizeof(severAddr)):structfdsetmask;FD_ZER0(&mask):FD_SET(sock,&mask);structtimevaltimeout:timeout,tvsec=TIMEOUTCONNECT;timeout,tvusee=0;if(se
7、lect(0,NULL,&mask,NULL,fetimcout)==1)timeout.tv_sec=TIMEOUT_RECEIVE;if(select(0,&mask,NULL,NULL,&timeout)=1)if(recv(sock,(char*)&ulTime,4,0)=4)ulTime=ntohl(ulTime):closesocket(sock):returnTRUE;closcsockct(sock):returnFALSE;}voidMySetTime(unsignedlongulTime)//MySetTime函数的功能是将
8、位值转换为系统时间,并设置系统时间{FILETIMEft;SYSTEMTIMEst;st.wYcar=1900;st.wMonth=1;st.wDay