《网络课设-VB实现TIME协议基本功能.docx》由会员分享,可在线阅读,更多相关《网络课设-VB实现TIME协议基本功能.docx(9页珍藏版)》请在第一文库网上搜索。
1、东起大尊秦皇岛台微史3传息系计算机网络课程设计VB实现TIME协议基本功能专业名称计算机科学与技术班级学号*学生姓名*指导教师*设计时间2011.7.4-2010.7.17课程设计任务书专业:计算机科学与技术学号:4080422学生姓名(签名):设计题目:一、设计实验条件语言:vb设备:PC机一台工具:vs2010二、设计任务及要求利用VB实现TIME协议的基本功能三、设计报告的内容1 .设计题目与设计任务(设计任务书)设计题目:T1ME协议设计要求:TIME协议是基于TCP/IP的应用层协议,如果一台PC机希望精确地设置自己的日期和时间,它可以访问网络上运行T1MESERVER程序的服务器,
2、可参阅RFC8686-5本次设计要求利用VB实现TIME协议的基本功能2 .前言(绪论)(设计的目的、意义等)RFC868时间协议提供了一个独立于站点的,机器可读的日期和时间信息。设计这个协议的一个重要目的在于,网络上的许多主机并没有时间的观念,在分布式的系统上,主机的时间往往可以人为改变,而且因为机器时钟内的误差而变得不一致,因此需要使用时间服务器通过选举方式得到网络时间,让服务器有一个准确的时间观念。不要小看时间,这对于一些以时间为标准的分布运行的程序简单是太重要了。下面是通过TCP协议工作的时间协议的工作过程:这里S代表服务器,C代表客户。S:检测端口37U:连接到端口37S:以32位二
3、进制数发送时间U:接收时间U:关闭连接S:关闭连接服务器在端口37上监听连接。当连接建立后,服务器返回一个32位的时间值,然后关闭连接。本程序模拟了RFC868时间协议运行的过程。主要运用vb中一个封装的控件一一WinSOCk进行服务器和客户端之间的通讯。其中,服务器采用了WinSoCk控件数组的方法,真正在服务器端实现了多线程,并且实现了服务器和客户端之间一对多的模式。如图,使用CIient窗口模拟客户端,向127.0.0.1服务器(也就是本机)的37端口发动连接请求。使用SerVer窗口模拟服务器,响应CIient的连接请求。连接成功后CIient向SerVer发送获取当前时间的请求,Se
4、rVer将系统时间返回给C1ient。从而模拟RFC868时间协议运行过程。3 .设计主体(各部分设计内容、分析、结论等)127.0.0.127entIOI1回I1-IQ国Pg1F滞I连接服务s!一开连接更新时间3.1客户端在客户端面板中插入WinSoCk控件,在其属性中选择TCP协议,在VS2010的工具箱中选择文本框、按钮等工具构成如图所示面板,在各按钮上添加相应的操作。点击“更新时间”,显示系统时间。客户端显示服务器端发回的时间。点击“连接服务器”按钮,显示连接成功。同时此按钮变为灰色(即不可用)。客户端开始向设置好的“服务器IP”的“端口”发送连接请求。点击“断开连接”,此按钮及“更新
5、时间”按钮变为灰色。客户端与服务器端之间的连接被断开。C1ient窗口代码:Pub1icC1assC1ientFormPrivateSubconnectC1ick(ByVa1senderAsSystem.Object,ByVa1eAsSystem.EventArgs)Hand1esconnect.C1ickTrytcpC1ient.Connect(serIP.Text,serPort.Text)time.Text=正在连接”CatchexAsExceptionMessageBox.ShOW(连接出错)EndTryEndSubPrivateSubc1ientForm_1oad(ByVa1send
6、erAsSystem.Object,ByVa1eAsSystem.EventArgs)Hand1esMyBase.1oadunconnect.Enab1ed=Fa1seupdate.Enab1ed=Fa1seEndSubPrivateSubunconnect_C1ick(ByVa1senderAsSystem.Object,ByVa1eAsSystem.EventArgs)Hand1esunconnect.C1icktcC1ient.C1ose()serIP.Enab1ed=TrueserPort.Enab1ed=Trueconnect.Enab1ed=Trueunconnect.Enab1e
7、d=Fa1seupdate.Enab1ed=Fa1seEndSubPrivateSubupdateC1ick(ByVa1senderAsSystem.Object,ByVa1eAsSystem.EventArgs)Hand1esupdate.C1icktcpC1ient.SendData(UpdateTime)EndSubPrivateSubIcpC1ientDataArriva1(ByVa1senderAsSystem.Object,ByVa1eAsAxMSWinsock1ib.DMSWinsockConIro1Even1sDattiArriva1Event)Hand1estcpC1ient
8、.DataArriva1DimrevDateAsStringrevDate=”tcpC1ient.GetData(revDate)time.Text=revDateEndSubPrivateSubtcpC1ient_ConnectEvent(ByVa1senderAsSystem.Object,ByVa1eAsSystem.EventArgs)Hand1estcpC1ient.ConnectEventconnect.Enab1ed=Fa1seunconnect.Enab1ed=Trueupdate.Enab1ed=TrueserIP.Enab1ed=Fa1seserPort.Enab1ed=F
9、a1setime.Text=连接成功”MessageBox.ShOW(连接成功)EndSubPrivateSubtcpC1ientError(ByVa1senderAsSystem.Object,ByVa1eAsAxMSWinsock1ib.DMSWinsockContro1Even1sErrorEven1)Hand1estcpC1ient.ErrorMessageBox.ShOW(连接出错)tcpC1ient.C1ose()EndSubEndC1ass3.2服务器端同样在服务器端的Winsock控件的属性中选择TCP协议。当客户端没有发送连接请求的时候服务器端显示“当前没有客户端接入”。当有
10、多个客户端连接到服务器的时候显示客户端的个数。当有客户端请求更新时间时发送给该客户端当前时间,没有发送更新时间请求的客户端则不发送。Server窗口代码:Pub1icC1assServerPrivatetcpAsAxMSWinsock1ib.AxWinsockPrivateMAXAs1ongPrivateSubServer1oad(ByVa1senderAsSystem.Object,ByVa1eAsSystem.EventArgs)Hand1esMyBase.1oadMAX=01istener.1oca1Port=371istener.1isten()1abe11Text=当前没有客服端接入
11、”EndSubPrivateSub1istener_ConnectIonRequest(ByVa1senderAsSystem.Object,ByVa1eAsAxMSWinsock1ib.DMSwinSoCkConIrf)IEcn1sConnectiOnRequestEvent)Hand1es1istener.ConnectionRequesttcp=NewAxMSWinsock1ib.AxWinsockOMe.Contro1s.Add(tcp)tcp.1oca1Port=OAddHand1ertcp.DataArriva1,AddressOftcpDataArriva1AddHand1ert
12、cp.C1oseEvent,AddressOftcpC1oseEventtcp.Accept(e.requestID)1abe11Text=当前有&(Me.Contro1s.Count-2)&”客户连接到服务器”EndSubPrivateSubtcpDataArriva1(ByVa1senderAsSystem.Object,ByVa1eAsAxMSWinsock1ib.DMSWinsockConIro1Even1sDataArriva1Event)Hand1es1istener.DataArriva1TryDimtimeStrAsStringtimeStr=Format(Now,*yyyy-
13、MM-ddss*).ToStringOForEachtcptInMe.Contro1sIfTypeOf(tcpt)IsAxMSWinsock1ib.AxWinsockThenIftcpt.Ct1State=7ThenDimIemAsString=”tcpt.GetData(tern)IftemOVbNu11StringThentcpt.SendData(IimeStr)EndIfEndIfEndIfNextCatchexAsExceptionMessageBox.Show(ex.Message)EndTryEndSubPrivateSubtcpC1oseEvent(ByVa1senderAsS
14、ystem.Object,ByVa1eAsSystem.EventArgs)Hand1es1istener.C1oseEventTryForEachtcptInMe.Contro1sIfTypeOf(tcpt)IsAxMSWinsock1ib.AxWinsockThenIftcpt.Ct1State=8ThenMe.Contro1s.Remove(tcpt)1abe11Text=当前有&(Me.Contro1s.Count-2)&”客户连接到服务器”EndIfEndIfNextCatchexAsExceptionMessageBox.Show(ex.Message)EndTryEndSubEn
15、dC1ass4 .结束语课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,当今计算机应用在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握计算机开发技术是十分重要的。这次课程设计历时2个星期,通过课程设计,发现自己的很多不足,自己知识的很多漏洞,看到了自己的实践经验还是比较缺乏,理论联系实际的能力还急需提高。在这个过程中,我也曾经因为实践经验的缺乏失落过,也曾经仿真成功而热情高涨。生活就是这样,汗水预示着结果也见证着收获。对我而言,知识上的收获重要,精神上的丰收更加可喜。让我知道了学无止境的道理。我们每一个人永远不能满足于现有的成就,人生就像在爬山,一座山峰的后面还有更高的山峰在等着你。挫折是一份财富,经历是一份拥有。这次课程设计必将成为我人生旅途上一个非常美好的回忆!四、设计时间与安排1、设计时间:2周2、设计时间安排:2010.7.5-2010.7.16熟悉实验设备、收集资料:3天设计图纸、实验、计算、程序编写调试:8天编写课