




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课程设计学生姓名 学 号 院 系 专 业 指导教师 2012年9月15号摘 要在任务一中,利用Visual Basic语言中的WinSock控件设计一个基于TCP协议的通讯程序。整个程序包括服务器和客户端两个部分。要实现多台计算机连接情况下的接收、发送字符串,就是指多台客户端连接到同一个服务器,以服务器为中端来进行通讯。当你运行服务器,然后在其它电脑上运行客户端,输入服务器主机的IP,连接到服务器,客户端与客户端之间即可实现简易的通讯功能。在任务二中,利用Visual Basic语言设计一个简易计算器。整个系统都是在响应鼠标的Click事件来实现的。即在设计的界面上输入你要进行计算数据和运算符
2、号,就可以得到正确的运算结果。关键词:winsock,TCP协议,计算器,Visual BasicAbstractIn task one, using Visual Basic language in WinSock control to design a protocol based on the TCP communication procedures. The whole procedure including the server and client in two parts. In order to realize the multiple computers connected
3、in case of receiving, sending the string, refers to multiple client connected to a server to server, for in the end to communicate. When you run the server, and then in the other computer running the client, server host IP, connect to the server, between the client and the client can realize simple
4、communication function.In the second task, using Visual Basic language to design a simple calculator. The whole system is in the response of mouse Click events to achieve. In the design of the interface input you want to calculate data and operation symbol, can get the right result.Key words: Winsoc
5、k, TCP protocol, calculator, Visual Basic目录前 言1第一章 概述11.1课程设计的课题11.2课程设计工作进程11.3设计要求1第二章 任务一22.1 Vb Winsock控件及TCP协议介绍22.3.1 TCP通信协议的基础32.3.2 客户端与服务器的实现过程42.3.3程序的编写62.3.4生成可执行文件92.4结果测试92.5 遇到的问题及解决方案112.5.1 遇到的问题112.5.2 解决方案11第三章 任务二123.1 设计思想123.2 程序设计步骤123.2.1 界面设置123.2.2 生成可执行文件143.3 结果测试143.4 遇
6、到的问题及解决方案173.4.1 遇到的问题173.4.2 解决方案17第四章 总结与展望18参考文献18致谢19前 言Visual Basic(VB)是一种由微软公司开发的包含协助开发环境的事件驱动编程语言。从任何标准来说,VB都是世界上使用人数最多的语言不仅是盛赞VB的开发者还是抱怨VB的开发者的数量。它源自于BASIC编程语言。VB拥有图形用户界面(GUI)和快速应用程序开发(RAD)系统,可以轻易的使用DAO、RDO、ADO连接数据库,或者轻松的创建ActiveX控件。程序员可以轻松的使用VB提供的组件快速建立一个应用程序。随着计算机技术和通讯技术的发展,计算机网络已渗透到各个应用领域
7、,其中最突出的,便是以TCP/ IP 协议为核心的Internet 网络发展最为迅速。因此,计算机应用程序的开发也由传统单机处理模式,转向以多机通信为主的网络应用开发。Microsoft 面向对象的程序开发工具VisualBasic 提供了基于Windows Socket s 网络编程接口的Winsock 控件,利用该控件程序员可以更方便、快捷的开发基于TCP/ IP 的应用程序。其使用方法也大同小异,在此我们将着重介绍Winsock 控件在Visual Baisc6. 0 中的使用方法。要编写简单的客户端应用或服务器应用程序,不必详细了解TCP/ IP 协议的细节和调用底层的Winsock
8、API。只需简单的设置好相应Winsock控件的属性,调用其特定的方法,就可编写出方便连接到一台远程机器、并进行双向通信和数据交换的程序。第1章 概述1.1课程设计的课题1、利用WinSock控件编写基于TCP协议的应用程序,要求如下:a、使用TCP协议,包含服务器和客户端b、可以实现多台计算机连接情况下的接收、发送字符串c、处于连接的多台计算机窗口显示相关的字符串2、制作一个简单计算器的程序,其功能与普通计算器相差不大,可以进行四则运算,当按下“清除”按钮时,上方显示区数字清变为“0”,准备进行下次运算。(如下图)1.2课程设计工作进程2012.9.10-2012.9.10 查阅资料, 构思
9、设计方案2012.9.11-2012.9.12 单元功能模块设计、计算、绘图2012.9.13-2012.9.14 总体系统流程图和电路原理图设计、绘图2012.9.15 编写设计说明书1.3设计要求1、 按计划要求开展设计工作,分析设计过程中所出现的技术难题,并能提出解决方案。严格遵守纪律,保质保量完成规定的设计任务。2、 查阅文献不少于10篇。3、 课程设计字数要求在8000字以上,要求设计(论文)内容完整、准确,层次分明,数据可靠,文字简练,分析透彻,推理严谨,立论正确。第2章 任务一2.1 Vb Winsock控件及TCP协议介绍Winsock是Mcrosoft windows提供的网
10、络编程接口,它提供了基于TCP/IP协议接口实现方法。通过网络进行的数据通信,需要用地址来表示网络中的主机。TCP/IP协议使用IP地址来作为主机的标识。实现的连接方式是通过IP地址来识别的。通常情况下每台设备运行的不止一个程序,所以为了使用应用程序间的连接,还需要建立一个地址标识。在TCP/IP中使用端口来作为标识号(PORT),IP地址+端口地址。TCP:实现提供双向,有序无从复的数据流服务,流量控制+差错检测+纠错等功能。2.2 Visual Basic Winsock控件的导入在打开Visual Basic 软件时,在工具箱中并没有Winsock 控件,要使用它,首先要将这个控件引用进
11、来。方法如下:在VB里点击菜单【工程】【部件】在弹出的部件窗体里找到“Microsoft Winsock Control 6.0(SP6)”,选中,再点【确定】,然后Winsock控件就添加到vb左侧的工具栏里了。选择完成后这时在Visual Basic的编辑画面左这的工具箱中会多一个控件,这就是Winsock控件,现在就可以开始使用它进行设计编程。选择完成后这时在Visual Basic的编辑画面左这的工具箱中会多一个控件,这就是Winsock控件,就可以直接放到窗口进行使用。2.3 程序设计步骤2.3.1 TCP通信协议的基础TCP数据传输协议允许创建和维护与远程计算机的连接。连接两台计算
12、机就可彼此进行数据传输。如果创建客户应用程序,就必须知道服务器计算机名或者 IP 地址(RemoteHost 属性),还要知道进行“侦听”的端口(RemotePort 属性),然后调用 Connect 方法。如果创建服务器应用程序,就应设置一个收听端口(LocalPort 属性)并调用 Listen 方法。当客户计算机需要连接时就会发生 ConnectionRequest 事件。为了完成连接,可调用 ConnectionRequest 事件内的 Accept 方法。建立连接后,任何一方计算机都可以收发数据。为了发送数据,可调用 SendData 方法。当接收数据时会发生 DataArrival
13、 事件。调用 DataArrival 事件内的 GetData 方法就可获取数据。通讯协议的选择是通过设置WinSock的Protocol属性来实现的。2.3.2 客户端与服务器的实现过程服务器端:a、读取服务器的IP地址textserverIP.Text = Winsock1.LocalIPb、设置服务器本地端口Winsock1(0).LocalPort = 10001 c、监听客户端的连接请求Winsock1(0).Listen d、当有连接到达时,接受请求 在事件Winsock1_ConnectionRequest中编写如下代码: Winsock1(Socknumber).Accept
14、requested e、发送与接收数据 在事件Winsock1_DataArrival中编写如下代码: Winsock1(Index).GetData c 获取数据Winsock1(i).SendData c 发送数据 f、关闭连接 Winsock1.CloseYESNOError?Connect远程主机IP与端口设置开始断开连接?SendData GetDataClose结束其流程图如下:客户端:a、设置远程服务器主机端口Winsock1.RemotePort = 10001b、设置远程服务器主机IP地址 Winsock1.RemoteHost = Trim(textserverIP.Tex
15、t)在文本框textserverIP中输入服务器的IP地址。 c、与服务器主机连接,发生错误则关闭Winsock1.Connect d、发送与接收数据 在事件Winsock1_DataArrival中编写如下代码, Winsock1.SendData textsend.Text 要发送的话在文本框textsend中输入 Winsock1.GetData c接收数据,将接收到的数据存放在变量c中 e、关闭连接YESNOClose结束GetData , SendDataError ?Listen本地端口设置开始 Winsock1.Close其流程图如下所示:2.3.3程序的编写服务器端的程序编写:
16、1、 在服务器端创建一个新的工程将其命名为"server"。2、将缺省窗体命名为"server"。3、在窗体中添加一个ListBox控件,将其命名为"ListBox"。4、在窗体中添加一个WinSock控件,其名默认为Winsock1,并将其属性"Index"属性设置为0。5、在窗体上添加两个TextBox控件,其名分别为"textserverIP"、"textnum",textnum的初始值设为0.6、在窗体上添加三个Label控件,其名默认为Label1、Label2、L
17、abel3,并将它们的Caption属性改为“服务器IP”、“在线人数”、“客户端IP列表”。7、在窗体上添加一个Command控件,其名默认为Command1,将其Caption属性改为“退出”。8、在窗体中添加如下代码:Private Gac() As BooleanDim socknum As Integer '定义变量Private Sub Form_Load() '设置侦听端口Winsock1(0).LocalPort = 10001 '读取服务器的IP地址 textserverIP.Text = Winsock1.LocalIP '开始侦听 Wins
18、ock1.Listen'设置变量初始值socknumber = 0End SubPrivate Sub Form_Unload(Cancel As Integer) 'unload时关闭winsock控件 Winsock1(0).CloseEnd SubPrivate Sub Command_Click() '点击退出按键,退出系统EndEnd SubPrivate Sub Winsock1_Close(Index As Integer) '关闭winsock Winsock1(Index).Close Unload Winsock1(Index) Gac(In
19、dex) = False textnum.Text = Int(textnum.Text) - 1End SubPrivate Sub Winsock1_ConnectionRequest(Index As Integer, ByVal requestID As Long) '当客户机发送连接请求时,触发该事件 Dim ip As String '定义变量 socknumber = socknumber + 1 '连接请求 Load Winsock1(socknumber) Winsock1(socknumber).Accept requestID '使用acc
20、ept方法接受连接请求 ReDim Preserve Gac(socknumber) Gac(socknumber) = True textnum.Text = Int(textnum.Text) + 1 ip = Winsock1(Index).RemoteHostIP '读出发送请求的客户端IP List1.AddItem ip'将得到的客户端IP在List列表中显示End SubPrivate Sub Winsock1_DataArrival(Index As Integer, ByVal bytesTotal As Long) '当客户端有数据发送过来时,触发该
21、事件 Dim text As String Winsock1(Index).GetData text'数据到达 Dim i As Integer For i = 1 To UBound(Gac) If Not i = Index Then If Gac(i) Then Winsock1(i).SendData text '利用SendData方法发送数据 DoEvents End If End If Next iEnd Sub客户端的程序编写:1、在客户端创建一个新的工程将其命名为“client”。2、将缺省窗体命名为 “client”。3、将窗体的标题改为“client”。4
22、、在窗体中添加一个 WinSock 控件,默认其命名为 Winsock1。5、在窗体中添加三个TextBox 控件。其名分别命为textserverIP、textsend、textreceive,并将其内容清空。6、在窗体中添加四个CommandButton控件。其命名默认为 Command1、Command2、Command3、Command4,并将它们的Caption属性分别修改为“连接”、“发送”、“清空”、“退出”。7、在窗体上放四个Label 控件,其命名默认为Label1、Label2、Label3,并将它们的Caption属性修改为“发送”、“聊天记录”、“服务器IP”。8、 在
23、窗体中添加如下的代码:Private Sub Form_Load() Command2.Enabled = False '发送键无效 '设置侦听端口 Winsock1.RemotePort = 10001End SubPrivate Sub Command5_Click() '按退出键,退出程序 EndEnd SubPrivate Sub Command1_Click() '连接服务器 '根据textserverIP文本框输入的服务器IP地址,进行连接 Winsock1.RemoteHost = Trim(textserverIP.Text) Winso
24、ck1.Connect Command1.Enabled = False Do DoEvents Loop Until Winsock1.State = sckConnected Or Winsock1.State = sckError If Winsock1.State = sckError Then Command1.Enabled = True Winsock1.Close Else'如果与服务器连接成功,则提示下面内容MsgBox "您成功与服务器连接" Command2.Enabled = True textserverIP.Enabled = False
25、 textsend.SetFocus End IfEnd SubPrivate Sub Command2_Click() '发送消息If textsend.Text = "" ThenMsgBox "不能发送空消息"Else Winsock1.SendData textsend.Text textreceive.Text = textreceive.Text + "我说的话: " + textsend.Text + Chr$(13) + Chr$(10) textsend.Text = ""End Ifte
26、xtsend.SetFocusEnd SubPrivate Sub Command4_Click() '清空聊天记录程序段textreceive.Text = " "textsend.SetFocusEnd SubPrivate Sub Winsock1_DataArrival(ByVal bytesTotal As Long)'服务器数据发来 Dim c As String '定义变量'当服务器有数据发来,用getdata方法获取,然后显示在textreceive文本框内 Winsock1.GetData c textreceive.Tex
27、t = textreceive.Text + "对方说的话: " + c + Chr$(13) + Chr$(10)End Sub2.3.4生成可执行文件点击“文件”“server.exe”即可生成服务器端的可执行文件,如下图所示:(client.exe的生成方法相同)2.4结果测试a、双击“server.exe”,运行服务器b、双击“client.exe”,运行客户端,在服务器IP中输入服务器IP地址112.13.91.26,连接,查看是否连接成功。c、然后查看服务器的连接情况d、成功后,可以开始聊天,在客户端发送文本框中输入需要发送的消息,并点击发送按钮,将消息发送出去
28、。2.5 遇到的问题及解决方案2.5.1 遇到的问题1、 一开始,只能服务器与客户端之间进行通讯,而客户端与客户端之间不能进行通讯。2.5.2 解决方案1、将winsock控件编排索引,将客户端发送给服务器的数据,利用索引来发给其他的客户端。第3章 任务二3.1 设计思想基于以前学习的知识,制作一个简易计算器有多种方法,例如,VB和Labview等。由于任务一的制作,熟悉了VB的界面及操作,便决定使用VB来制作。按照参考的界面,在VB窗体上放置各种控件,根据简单加减乘除思想来编程。3.2 程序设计步骤3.2.1 界面设置1、创建一个命令按钮,名称为Command1,Caption 属性为数字0
29、 。 2、然后进行“复制”和“粘贴”,当选择“粘贴”时,出现对话框提示已有一个同名控件,询问是否创建控件组,选择“是”后,即创建了一个名为“Command”的控件组。这时,第一个按钮的Index属性值默认为“0”,第二个的Index属性值自动设为“1”,并且大小与第一个按钮相同,只需修改其 Caption 属性为数字“1”并将其拖至合适位置即可。此后继续使用“粘贴”的方法建立数字09的按钮每建立一个,就将它拖到合适处,并修改相应的Caption属性值。 3、重复1.2步,建立4个符号的按钮。其名称为Command2。4、创建三个命令按钮,其名默认为Command3、Command4、Comma
30、nd5,将其Caption改为“.”、“清除”、“退出”。5、在窗体中添加如下的代码:Dim suanfa As IntegerDim shu As StringDim shu1 As StringDim num As IntegerDim num1 As IntegerPrivate Sub Command1_Click() '清空 Text1.Text = "0" shu1 = "" shu = ""End SubPrivate Sub Command2_Click(Index As Integer) If (num =
31、1) Then '当按第二个数据时,第一个数据消除,解决1 Text1.Text = "" '清空文本框,以便第二个数输入 num = 0 End If If (num1 = 1) And (shu1 <> "") Then '解决3 shu1 = "" shu = "" num1 = 0 End If shu1 = shu1 + Command2(Index).Caption '记录下第一个数 Text1.Text = shu1 '显示第一个数 End SubP
32、rivate Sub Command3_Click(Index As Integer) '记录运算符和第一个数据 shu = shu1 '将第一个数赋值给shu,则第二个数为shu1 'Text1.Text = "" '清空文本框,以便第二个数输入 shu1 = "" '清空shu1 suanfa = Index '记录下算法,03分别为+、*、/ num = 1 If (num1 = 1) And (num = 1) Then '以前一次的结果加上算法继续计算,解决2 shu = Text1.Te
33、xt num1 = 0 End IfEnd SubPrivate Sub Command4_Click() '输入小数点 If InStr(shu1, ".") <> 0 Then MsgBox "已经有一个小数点了" Exit Sub '退出该事件过程 Else shu1 = shu1 + "." Text1.Text = shu1 End IfEnd SubPrivate Sub Command5_Click() '根据运算符来计算 Select Case suanfa Case 0 Text1.Text = Str(Val(shu) + Val(shu1) Case 1 Text1.Text = Str(Val(shu) - Val(shu1) Case 2
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 财务会计学模拟题
- 自动控制原理考试题
- 设施维护管理制度(9篇)
- 2024-2025学年冀教版八年级下学期英语期末试卷(含答案)
- 幼儿园《疫情防控安全》教案5篇
- 2023年电大开放教育货币银行学网考题库
- 2025年android自学教程!BAT等大厂必问技术面试题BAT大厂面试总结-bat企业安卓课程
- 期末应用题专项训练:分数的加法和减法(含解析)-2024-2025学年数学五年级下册人教版
- 建筑施工特种作业-建筑电工真题库-9
- 日语听力题目大全及答案
- GB/T 14832-2008标准弹性体材料与液压液体的相容性试验
- GB/T 1185-2006光学零件表面疵病
- 工业管道工程工程量清单项目设置及计价
- 济宁市城市介绍家乡旅游攻略PPT
- 熊浩演讲稿全
- 基于MATLAB的控制系统仿真及应用-第5章-基于MATLABSimulink的控制系统建模与仿真课件
- 巡检培训课件.ppt
- 北师大版五下书法《第6课戈字旁》课件
- 国家开放大学电大本科《设施园艺学》2023-2024期末试题及答案(试卷代号:1329)
- 固废中心废气处理方案
- 关于地理高考四大能力要求解读
评论
0/150
提交评论