网络程序课程设计实现网络对时程序_第1页
网络程序课程设计实现网络对时程序_第2页
网络程序课程设计实现网络对时程序_第3页
网络程序课程设计实现网络对时程序_第4页
网络程序课程设计实现网络对时程序_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、课题名称: 实现网络对时程序 院 (系): 计算机工程学院 专 业: 通信工程 班 级: 学生姓名: 学 号: 指导教师: 2012年6月17日目录一、实验软件3二、设计内容3三、设计原理4四、设计过程4五、程序代码及测试分析51、服务器:52、客户端:73、程序运行结果:9六、心得体会11七、参考文献11摘 要:本次课程设计以visual c+ 6.0作为开发平台,完成网络对时服务系统,系统分为服务器端和客户端,客户端能够从服务器端取出标准时间,然后同步本机时钟。通过实践复习巩固课堂所学的理论知识,也可以加强自己的实践操作,提高对所学知识的综合应用能力,同时也经过课后的上网查资料,同学间的相

2、互探讨,逐步修改,完成了本系统的设计,设计基本上实现了设计所要求的功能。一、实验软件(visual c+ 6.0)visual c+ 6.0,简称vc或者vc6.0,是微软推出的一款c+编译器,将“高级语言”翻译为“机器语言(低级语言)”的程序。visual c+是一个功能强大的可视化软件开发工具。visual c+ 6.0对网络编程的支持有socket支持,wininet支持,mapi和isapi支持等。其中,windows sockets api是tcp/ip网络环境里,也是internet上进行开发最为通用的api。在tcp/ip网络通信环境下,socket数据传输是一种特殊的i/o,它

3、也相当于一种文件描述符,具有一个类似于打开文件的函数调用socket()。可以这样理解:socket实际上是一个通信端点,通过它,用户的socket程序可以通过网络和其他的socket应用程序通信。二、设计内容在局域网中有很多应用软件为了协同工作,需要保证客户机上时间统一,方法是客户机从一个时间相对正确的服务器读取时间,以此来校正本地时间。网络对时系统分服务器端程序和客户端程序。在服务器端程序需要达到以下功能:能够接收局域网中任一台客户机的对时请求并准确向客户机发送服务器端的时间和日期;客户端程序要达到以下功能:能够设定服务器的主机或者ip地址,能够接收服务器端发送的时间和日期信息并以此校正本

4、地时间与服务器端的时间同步。按照c/s模型设计一个网络对时服务系统,系统分为服务器端(server)和客户端(client)。服务器按照时间协议的要求(参考rfc-868),对发出对时请求的客户端,以tcp/i p的格式返回响应。客户端根据服务器端的返回值设计本地时间与服务器的时间同步。三、设计原理tcp/ip网络对时服务系统客户端和服务器原理主要分2个部分。服务器端创建套接监听字,并为它关联一个本地地址(指定ip地址和端口),然后进入监听状态准备接受客户的连接请求,为客户端的连接请求,服务器调用accept函数。客户端创建套接字即可调用conenet函数试图连接服务器监听套接字,当服务器端的

5、accept函数返回后,connect函数也返回。此时客户端使用socket函数创建的套接字,双方就可以通信了。服务器调用socket函数创建套接字server,调用bind绑定套接字到本地ip地址和端口,在端口监听并调用recvfrom函数接受客户端的对时请求,并调用sendto函数发送服务器时间到客户端,然后关闭套接字。客户端调用socket函数创建套接字client,调用sendto函数向服务器端发送对时请求,服务器端响应请求之后,客户端调用recvfrom函数从服务器端接收标准时间并设置本地时间与服务器端时间同步。四、设计过程 对时服务系统的基本结构如图:客户端myclient服务器m

6、yserversocket()创建数据报套接字clientsocket()创建数据报套接字serverbind()与本地地址绑定在37端口等待客户端对时请求 recvfrom()接收客户端请求sendto()发送数据报对时请求 服务请求 recvfrom()接收服务器数据报sendto()发送数据报 服务应答 close()关闭套接字serverclose()关闭套接字client 如上流程图所示:服务器端调用socket函数创建套接字server,然后调用bind绑定套接字到本地ip地址和端口,在端口等待客户端的对时请求并调用recvfrom函数接受客户端的对时请求,并调用sendto函数发

7、送服务器时间到客户端,然后关闭服务器套接字server。客户端调用socket函数创建套接字client,然后调用sendto函数向服务器端发送对时请求,服务器端响应客户端的对时请求之后,调用sendto函数发送服务器时间到客户端,然后客户端调用recvfrom函数接收服务器端发送过来的响应,接收标准时间并设置本地时间与服务器端时间同步。五、程序代码及测试分析1、服务器:#pragma comment(lib,ws2_32.lib)#include#include#includeint main()wsadata wsadata;int err = wsastartup(winsock_ver

8、sion,&wsadata);if(err != 0)printf(wsastartup() failed :%dn,wsagetlasterror();return -1;socket sock = socket(af_inet,sock_stream,0);if(sock = invalid_socket)printf(socket() failed:%dn,wsagetlasterror();wsacleanup();return -1;sockaddr_in localaddr; /用于发送数据的服务器的地址结构localaddr.sin_family = af_inet;locala

9、ddr.sin_port = htons(20000);localaddr.sin_addr.s_un.s_addr = htonl(inaddr_any); /ip地址由系统指定使用当前配置的iperr = bind(sock,(sockaddr *)&localaddr,sizeof(localaddr);if(err = socket_error)printf(bind() failed:%dn,wsagetlasterror();closesocket(sock);wsacleanup();return -1;err=listen(sock,5);if(err = socket_err

10、or)printf(listen() failed:%dn,wsagetlasterror();closesocket(sock);wsacleanup();return -1;sockaddr_in clientaddr;int len = sizeof(clientaddr);while(1)printf(-网络对时服务系统欢迎您(通信092班 陈剑锋)-nn);printf(等待客户端的对时请求n);socket sockconn = accept(sock,(sockaddr *)&clientaddr,&len);if(sockconn = invalid_socket)printf

11、(accept() failed:%dn,wsagetlasterror();closesocket(sock);wsacleanup();return -1;printf(请求时间同步的客户端为:%s port:%dn,inet_ntoa(clientaddr.sin_addr),clientaddr.sin_port);char rbuf1024;while(1)memset(rbuf,0,1024);int rb = recv(sockconn,rbuf,1024,0);if(rb = socket_error)printf(recv() failed:%dn,wsagetlasterr

12、or();closesocket(sockconn);break;if(rb = 0)printf(connection is closed.nnn );shutdown(sockconn,sd_send);closesocket(sockconn);break;printf(服务器受到%d的请求:%sn,rb,rbuf);systemtime st; getlocaltime( &st ); printf(服务器时间:%04d-%02d-%02d %02d:%02d:%02dn,st.wyear,st.wmonth,st.wday,st.whour,st.wminute,st.wsecond

13、);int sb = send(sockconn,(char *)&st,sizeof(st),0);if(sb = socket_error)printf(send() failed:%dn,wsagetlasterror();closesocket(sockconn);wsacleanup();return -1;printf(发送本地时间成功!n);closesocket(sock);wsacleanup();return 0;2、 客户端:#pragma comment(lib,ws2_32.lib)#include#include#include#include int main()

14、 int m;dowsadata wsadata;int err = wsastartup(winsock_version,&wsadata);printf(-网络对时服务系统欢迎您(通信092班 陈剑锋)-nn);if(err != 0)printf(wsastartup() 出错:%dn,wsagetlasterror();return -1;socket sock = socket(af_inet,sock_stream,0);if(sock = invalid_socket)printf(socket()出错:%dn,wsagetlasterror();wsacleanup();ret

15、urn -1;sockaddr_in serveraddr;serveraddr.sin_family = af_inet;serveraddr.sin_port = htons(20000);serveraddr.sin_addr.s_un.s_addr = inet_addr(127.0.0.1);err=connect(sock,(sockaddr *)&serveraddr,sizeof(serveraddr);if(err = socket_error)printf(connect()出错:%dn,wsagetlasterror();closesocket(sock);wsaclea

16、nup();return -1;char data = 客户端请求时间同步!;int sb = send(sock,data,strlen(data),0);if(sb = socket_error)printf(send()出错:%dn,wsagetlasterror();closesocket(sock);wsacleanup();return -1;printf(已经发送请求给服务器 %sn,data,inet_ntoa(serveraddr.sin_addr);shutdown(sock,sd_send);systemtime st,sp;getlocaltime(&sp); prin

17、tf(本地时间为:%04d-%02d-%02d%.2d:%.2d:%.2d n,sp.wyear,sp.wmonth,sp.wday,sp.whour,sp.wminute,sp.wsecond);while(1)/memset(rbuf,0,1024);int rb =recv(sock,(char *)&st,sizeof(st),0);if(rb = socket_error)printf(recv()出错:%dn,wsagetlasterror();closesocket(sock);wsacleanup();return -1;if(rb=0)printf(connection is

18、 closed.nn);shutdown(sock,sd_send);closesocket(sock);break;printf(获取的服务器时间为:%04d-%02d-%02d %.2d:%.2d:%.2d n, st.wyear,st.wmonth,st.wday,st.whour, st.wminute, st.wsecond);setlocaltime(&st);printf(修改本地时间成功,已与%s时间同步!nn,inet_ntoa(serveraddr.sin_addr);printf(继续请按(1),退出请按(0)n);scanf(%d,&m);while(m=1);3、 程序运行结果:a、客户端向服务器发送对时请求,若服务器还没有打开,则客户端显示如下:b、服务器打开运行之后,等待客户端的对时请求,服务器显示如下:c、服务器打开运行之后,接受客户端的对时请求,服务器显示如下:d、服务器应答后客户端显示如下:e、按(1)刷新时间,服务器与客户端显示如下:六、心得体会通过本次课程设计,加深了对网络程序课程知识的认知,进一步巩固了课堂上所学习的理论知识,也可以加强自己的实践操作,提

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论