主从式通信课程设计.doc

上传人:文库蛋蛋多 文档编号:4141269 上传时间:2023-04-07 格式:DOC 页数:12 大小:155.50KB
返回 下载 相关 举报
主从式通信课程设计.doc_第1页
第1页 / 共12页
主从式通信课程设计.doc_第2页
第2页 / 共12页
主从式通信课程设计.doc_第3页
第3页 / 共12页
主从式通信课程设计.doc_第4页
第4页 / 共12页
主从式通信课程设计.doc_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《主从式通信课程设计.doc》由会员分享,可在线阅读,更多相关《主从式通信课程设计.doc(12页珍藏版)》请在三一办公上搜索。

1、第一章 功能需求分析11.1 课程设计目的及意义11.2 系统实现的具体功能11.3 主要特点21.4 Winsock编程原理和方法2第二章 系统设计32.1 总体方案3第三章 技术实现43.1 程序界面43.2 主要控件说明53.3 部分代码及说明63.3.1 主站Winsock1_DataArrival事件63.3.2 从站Winsock1_DataArrival事件63.3.3 巡回检测代码块73.3.4 主站主动向从站发送数据模块73.3.5 从站异常报告模块83.3.6 灯的实现模块8第四章 总结和体会9附录10主站代码截图10从站代码截图11第一章 功能需求分析1.1 课程设计目的

2、及意义本次的课程设计是通过主从式通信来了解和掌握简单的通信协议,是作为本学期学习TCP/IP协议族的一次实际应用,有助于深入的了解通信协议的具体实现方式。这次的课程设计加深对所学知识的了解和掌握,比如TCP协议和UDP协议的所用场合和不同之处;学习到对巡回检测系统的设计方法;同时学习了解和掌握对VB开发环境的一些基本的简单的常识,当然也增强了动手能力,为今后的设计做铺垫。1.2 系统实现的具体功能TCP是一种面向连接的通信协议,UDP(用户数据文报协议)是一个无连接协议。在工业应用中,为了提高效率通常采用UDP作为实时数据传输协议。因为UDP不提供数据包分组、组装和不能对数据包进行排序,无连接

3、,处理速度快,因此效率相对比较高。本系统是基于UDP协议的通信软件设计的巡回检测系统。巡回检测系统能够实现一些工业系统的自动化,通过该系统提取所需要的实时信息,根据信息内容做出相应的回应。巡回检测是计算机远程监控系统的一种工作模式。计算机远程监控系统通常由主站和从站构成,是典型的主从式通信系统。正常情况下,巡回检测模式采用一问一答的方式进行,当从站发生异常时可主动上报(例如报警)。具体要求如下:.设1个主站(Server)和5个从站(Client)。.系统应设置巡检周期和从站采样时间间隔。.系统的工作模式为:自动巡检+主动上报。.主机地址:127.0.0.1(主站和从站);本地端口号:1000

4、0(主站);远端端口号:1000110005(从站)。.分别设计主站和从站通信程序,同时打开主站和从站的程序时,主站能够定时巡检从站,从站做出相应的回应,检测到的在主站上显示出来(如灯亮表示连接上,反之表示断开)。1.3 主要特点本设计主站是主动呼叫方,主站按周期向各个从站端口发送信息,从站收到信息后作出应答。当从站发生异常时要主动向主站报告。从站程序可以同时打开多个。本系统是使用VB6.0编程环境实现的,基于UDP通信协议的主从式通信。所使用的控件对象有:标签(Label),文本框(Textbox),命令按钮(Command),通信(Winsock),形状(Shape),定时器(Timer)

5、。实现从一个窗口跳转到另一个窗口。1.4 Winsock编程原理和方法Winsock 控件对用户来说是不可见的,利用 WinSock 控件可以与远程计算机建立连接,并通过用户数据报协议 (UDP)或者传输控制协议 (TCP)进行数据交换。这两种协议都可以用来创建客户与服务器应用程序。本次设计是利用Winsock控件对象实现基于UDP通信协议的主从式通信,为了传输数据,首先要设置客户计算机的 Local Port 属性。然后,服务器计算机只需将 Remote Host 设置为客户计算机的 Internet 地址,并将 Remote Port 属性设置为跟客户计算机的 Local Port 属性相

6、同的端口,并调用 Send Data 方法来着手发送信息。于是,客户计算机使用 Data Arrival 事件内的 Get Data 方法来获取已发送的信息。主要使用的方法有Send Data 方法和Get Data 方法,在调用 Send Data 方法来着手发送信息时要先设定相同的端口;当传进 UNICODE 字符串并在网络上发送出去之前,将转化成 ANSI 字符串。Get Data 方法是获取当前的数据块并将其存储在变体类型的变量中。通常与Data Arrival 事件并用。第二章 系统设计2.1 总体方案本次设计是实现1个主站和5个从站的通信,主站的端口号为10000,1到5号从站的端

7、口为1000110005。结构如下:主站每隔一段时间从1号从站到5号从站依次发送一次巡检信息,从站收到信息就做出相应的回应,在从站之间还有一定的间隔。流程图如下: 第三章 技术实现3.1 程序界面主站:从站:3.2 主要控件说明主站中使用了1个计时器Timer()、1个Winsock控件和1个command控件,其他textbox控件和label若干从站使用1个Winsock控件和1个command控件,其他textbox控件和label若干,Timer控件:通过引发 Timer 事件,Timer 控件可以有规律地隔一段时间执行一次代码。Timer 控件用于背景进程中,它是不可见的。Winso

8、ck控件:Winsock 控件对用户来说是不可见的,利用 WinSock 控件可以与远程计算机建立连接,并通过用户数据报协议 (UDP)或者传输控制协议 (TCP)进行数据交换。这两种协议都可以用来创建客户与服务器应用程序。与 Timer 控件类似,WinSock 控件在运行时是不可见的。主要的用途:创建收集用户信息的客户端应用程序,并将收集的信息发送到某中央服务器。创建一个服务器应用程序,作为多个用户的数据的汇入点。创建“聊天”应用程序。Command Button 控件:Command Button 控件可以开始、中断或者结束一个进程。Textbox 控件:Textbox 控件有时也称作编

9、辑字段或者编辑控件,显示设计时输入的用户输入的、或运行时在代码中赋予控件的信息。3.3 部分代码及说明3.3.1 主站Winsock1_DataArrival事件Private Sub Winsock1_DataArrival (ByVal bytesTotal As Long)If bytesTotal 2 ThenDim strData As StringOn Error Resume NextWinsock1.GetData strDataText2.Text = Text2.Text & Chr(13) & Chr(10) & strDataShape1 (Winsock1.Remot

10、ePort - 10001).FillColor = &HFF00&End IfEnd Sub说明:如果收到的字节大于2执行GetData 并将收到的数据在text2文本框中输出,并将相应的Shape1(Winsock1.RemotePort - 10001)图形填充为绿色。3.3.2 从站Winsock1_DataArrival事件Private Sub Winsock2_DataArrival (ByVal bytesTotal As Long)If bytesTotal 2 ThenDim strData As StringWinsock2.GetData strDataText2.Te

11、xt = Text2.Text & Chr(13) & Chr(10) & strDataWinsock2.RemoteHost = 127.0.0.1Winsock2.RemotePort = 10000Winsock2.SendData Label4.Caption & 号站应答End IfEnd Sub说明:当从站接收到数据大于2时执行GetData 方法,并将接收到的数据在text2中显示,还要在接受到主站发来的数据后向主站发送应答Winsock2.SendData Label4.Caption & 号站应答。3.3.3 巡回检测代码块Private Sub Timer1_Timer

12、()For i = 10001 To 10005 Winsock1.RemoteHost = 127.0.0.1 Winsock1.RemotePort = i Shape1 (Winsock1.RemotePort - 10001).FillColor = &H80000008 Winsock1.SendData 主站巡检 & i - 10000 & 号站 DoEvents Sleep 200Next iEnd Sub每隔Timer1.Interval时间执行一次改代码块,每次执行时利用For循环将Winsock1.RemotePort设置为从10001到10005间的数,并且执行Winso

13、ck1.SendData 主站巡检 & i - 10000 & 号站向当前端口发送数据。循环体每执行一次Sleep 200。3.3.4 主站主动向从站发送数据模块Private Sub Command1_Click ()Winsock1.RemoteHost = 127.0.0.1Winsock1.RemotePort = Text1.TextWinsock1.SendData Text3.TextText3.Text = Text1.Text = End Sub说明:此代码由Command1_Click()事件触发,根据Text1.Text中的用户输入主动设置Winsock1.RemoteP

14、ort,并发送Text3.Text中用户输入的字符串到相应的端口,然后清空输入框和端口框的数据。3.3.5 从站异常报告模块Private Sub Command1_Click ()Winsock2.SendData Text3.TextText3.Text = End Sub说明:由Command1_Click()事件触发,点击Command1后发送Text3.Text中的字符串到主站报警,然后清空输入的数据。3.3.6 灯的实现模块在每次循环体执行时将当前端口对应的Shape填充为黑色Shape1 (Winsock1.RemotePort - 10001).FillColor = &H80

15、000008当收到应答时,将相应的Shape填充为绿色Shape1 (Winsock1.RemotePort - 10001).FillColor = &HFF00&第四章 总结和体会本次课程设计,使用VB6.0开发环境来做的,通过一些简单的控件对象来完成基于UDP通信协议的主从式通信的巡回检测和主动上报的程序。本次设计主要使用的控件是Winsock控件,Winsock控件是为了连接两台主机的控件,它主要使用Data Arrival事件来完成连接的。巡回检测是主站通过Timer控件来按照一定的时间间隔对从站的主机进行巡检,来确定是否连接,若连接就显示绿灯,就可以进行数据交流,反之不行。主动上报

16、就是从站发生异常时主动向主站发送相应的数据,便于主站及时的采取相应的措施来解决异常。但是,主动上报也是有一定的弊端的,当多台主机同时发生异常,又同时上报的话,就可能产出冲突。主站不能同时受理这些上报信息。解决这种冲突可以采取分割时间片的方法,为每个从站分配一个时间片,在相应从站的时间片内产生的异常可以上报,主站予以处理;反之,不允许上报,当然主站也不会处理的,要等到下一个时间片到来的时候才可以上报,这样才可以解决此冲突。 根据设计的要求,通过上网,和同学交流,请教老师等方式最终完成了本次设计,在整个过程中遇到了很多问题,问题大多源于对VB语言的不了解,有些解决,也有还没解决的,不是很完美。当然收获也很大:首先 实现了这个系统很有成就感。其次,了解了VB语言,有了自学一门语言的经验,最主要的就是要多问,遇到问题解决问题。附录主站代码截图从站代码截图

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号