




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、=Word行业资料分享-可编辑版本-双击可删=基于VB的点对点通信设计目标用Visual Basic编程,实现双机点对点通信,能将键盘上输入的数据发送到另一台计算机上;能 将接收到的数据显示到屏幕窗口内。设计原理和方法首先应该建立两个应用程序,一个作为服务器,一个作为客户端,通过Winsock控件来实现双机的点对点通信。Winsock控件是VB5.0的新增功能,它解决了以往应用 VB编程时网络中应用程序之间无法实现点对 点通信的难题。利用 Winsock控件可以与远程计算机建立连接,并通过用户数据报文协议( UDP或传 输控制协议(TCP进行数据交换。这两种协议都可以用来创建客户与服务器应用程
2、序。1)在使用Winsock控件时,首先需要考虑使用什么协议。TCP协议控件是基于连接的协议,可以将它同电话系统相比。在开始数据传输之前,用户必须先建 立连接,适用于传送大容量、需要安全性保证的数据文件。UD的议是一种无连接协议,两台计算机之间的传输类似于传递邮件。消息从一台计算机发送到另一台计算机,但是两者之间没有明确的连接。另外,单次传输的最大数据量取决于具体的网络。但本设计中要实现收发数据时,应用程序需要得到客户端或者服务器的确认信息,而且点对点通 信要求通信质量高,所以选择TCP协议,即客户端和服务器加入的控件协议均设置为sckTCPProtocol。TCP1、议是一个面向连接、全双工
3、、可靠的、按序传送的传输层协议,允许创建和维护与远程计算机的连接,连接的计算机可彼此进行数据传输。如果创建客户应用程序,就必须知道服务器计算机名或者IP 地址(RemoteHost属性),还要知道进行“侦听”的端口( RemotePort属性),然后调用Connect方法。如果创建服务器应用程序,就应设置一个收听端口 ( LocalPort属性)并调用Listen方法。当客户计算机需要连接时就会发生ConnectionRequest事件,为完成连接,可在ConnectionRequest事件中调用Accept方法。建立连接后,任何一方都可以通过 SendData发送和接收数据,并借助GetDa
4、ta把 自己的数据分离出来。传送数据时,需要先设定客户机的LocalPort属性,服务器则只需要把RemoteHost属性设定为客户机以太网的地址,并设定与客户机LocalPort属性相同的端口地址,借助SendData方法开始发送消息。客户机则在GetData事件中通过DataArrival事件分离出发送的信息。Winsock控件的工作原理:客户端向服务器端发出连接请求,服务器端则不停地监听客户端的请求,当两者的协议沟通时,客户端和服务器端之间就建立了连接 ,这时客户端和服务器端就可以实 现双向数据传输。 TOC o 1-5 h z 一个连接的生存周期包括以下几步:.服务器应用程序监听一个特
5、殊的窗口,.客户程序请求和服务器程序建立连接,.服务器程序接受连接,.数据在客户程序和服务器程序之间传送,.客户程序或服务器程序关闭连接。Winsock控件的主要方法 :Listen:将其设置为聆听模式,才有可能接收另一方的连接请求;Close:将终止双方的连接,而且对方也会引发close事件。SendData:将数据传送给远程计算机,一般传送字符串数据时,只要将字符串当成自变量传送即 可,如果是二进制数据的话,传输数据就必须以字节数组的方式储存;GetData :截取目前的数据块,将其存储在参数所定的变量中;源-于-网-络-收-集=Word行业资料分享-可编辑版本-双击可删=Winsock控
6、件的编程参数:LocalHostName属性:返回本地计算机的IP地址,格式是IP地址加点字符串(xxx.xxx.xxx.xxx ), 在设计时是只读的,而且是不可用的。LocalPort 属性:返回或者设置所用到的本地端口。在设计时是可读/可写的,而且是可用的。对用户说,该属性用来指定发送数据的本地端口。如果应用程序不需要特定端口,则指定0为端口号。在这种情况下,控件将选择一个随机端口。在建立起连接之后,这就是用于TC睢接的本地端口。Protocol属性:返回或设置 Winsock控件所使用的协议,本设计中选用TC曲、议,Protocol值为0。RemoteHostIP属性:返回远程计算机的
7、IP地址。RemotePort属性:返回或设置要连接的远程端口号。Port为要连接的端口,只要不是特定的端口,都可以,但是要确保客户端和服务器的端口设置一致。Winsock控件的主要事件connectionrequest :请求连接时产生connect :接受连接时产生close :关闭连接时产生dataArrival :发送数据产生error :请求连接失败时产生6)用Winsock控件设计应用程序VB6.0通过Winsock控件提供传输月艮务原语,传输月艮务原语包括:LISTEN、CONNEC TSEND RECEIEV和 DISCONNECT.窗体设计思路无论是客户端还是服务器端,两个窗
8、体中至少应该包含两个文本框,一个显示发送数据,一个显 示接收数据;包含一个 winsock控件,控件属性独立设置,但应遵从TC曲议;一个命令按钮控件,点击发送信息。客户端窗体要连接到服务器,还应在界面上有一个输入文本框供用户选择要连接的主机。另外再 添加两个命令按钮控件,分别作为建立连接和关闭连接。具体方法如下:.创建服务器应用程序(1)创建新的StandardEXE工程。(2)将窗体的标题改为“服务器”。(3)将默认的窗体的名称改为frmServer ,文件名为frmServer.frm 。(4)在窗体上放置一个 Winsock控件,将其命名为tcpServer ”,在窗体的load事件中,
9、置Winsock 控件的本地端口号为“ 2008”,并调用listen方法开始侦听。(5)在窗体上添加两个框架,将第1个命名为“接收数据显示窗口”,第2个命名为“发送数据显示窗口”,并分别在两个框架上各添加一个TextBox文本框控件。将第1个命名为“ txtOutPut ,第2个为“ txtSendData : 并将其Text属性设置为“空”。再添加一个按钮控件Command 1将其标题改为“发送信息”。为了让文本框支持多行文本输入,需要修改两个文本框的属性。即将 Multiline 属性设置为Ture ,ScrollBars 属性值设置为2 (Vertical )。当输入多行文本时,出现垂
10、直滚动条。(6)在 Winsock控件的ConnectionRequest事件中调用 Winsock控件的Accept方法接受客户机的连代码如下:Private Sub tcpServer_ConnectionRequest(ByVal requestID As Long)If tcpServer.State sckClosed ThentcpServer.ClosetcpServer.Accept requestID End If源-于-网-络-收-集=Word行业资料分享-可编辑版本-双击可删=End Sub(7)在Winsock控件的DataArrival事件中,使用Winsock控件的
11、GetData方法捕获发送端发来的消代码如下:Private Sub tcpServer_DataArrival(ByVal bytesTotal As Long)Dim strData As StringtcpServer.GetData Tmp, vbStringTmp = TmptxtOutput.Text = TmpEnd Sub(8)在按钮控件的Click事件中,调用Winsock控件的SendData方法将服务器输出数据发送回去(作为一种最简单的响应)。代码如下:Private Sub Command1_Click()tcpServer.SendData txtSendData.T
12、extEnd Sub3.创建客户端应用程序(1)在工程中创建一个新的窗体,标题改为“客户端”。(2)将窗体名称改为frmClient ,文件名为“frmClient.frm 。(3)在窗体上添加两个框架,将第 1个命名为“接收数据显示窗口”,第2个命名为“发送数据显示窗口”,并分别在两个框架上各添加一个TextBox文本框控件。将第1个命名为“ txtOutPut ,第2个为“txtSendData ,并将两个文本框Text属性设置为“空”。同服务器文本框支持多行输入一样, 修改两个文本框的属性,即将 Multiline 属性设置为“ Ture ,ScrollBars 属性值设置为“ 2”(V
13、ertical )。另外再在窗体上放置一个文本框,用来输入服务器IP地址(text1);三个命令按钮控件分别命名为cmdConnect、 Command2、 Command1,并将其标题改为“建立连接、关闭连接、 “发送信息”;一个Winsock控件并将其命名为“ tcpClient ”。(4)在连接按钮的click事件中,设置Winsock控件的远程IP地址(text1.text )和远程端口号2008, 并调用Winsock控件的connect方法向服务器发起连接。代码如下:Private Sub cmdConnect_Click()tcpClient.Connect Text1.Text
14、, 2008txtOutput.Text =恭喜您,已成功连接到服务器!End Sub(5)在发送按钮的click事件中,调用Winsock控件的SendData方法向服务器发送数据。代码如下:Private Sub Command1_Click()tcpClient.SendData txtSendData.TextEnd Sub(6)在关闭按钮控件的 Click事件中,调用Winsock控件的Close方法响应服务器的断开连接请求。 代码如下:Private Sub Command2_Click()txtOutput.Text =您已断开连接+ Chr$(13) + Chr$(10) +
15、txtOutput.Text源-于-网-络-收-集=Word行业资料分享-可编辑版本-双击可删=tcpClient.CloseEnd Sub(7)在Winsock控件的DataArrival事件中,使用Winsock控件的GetData方法捕获发送端发来的消 息,并将消息显示在响应文本框中。代码如下:Private Sub tcpClient_DataArrival(ByVal bytesTotal As Long)Dim strData As StringtcpClient.GetData Tmp, vbStringTmp = TmptxtOutput.Text = TmpEnd Sub设计
16、的功能连接两台计算机,一台作为服务器,另外一台作为客户端。两机能实现全双工通信,即都能发送 接收数据,并显示在应用程序的相应文本框中。程序框图源-于-网-络-收-集=Word行业资料分享-可编辑版本-双击可删=五、程序清单服务器程序如下:Private Sub Form_Load() tcpServer.LocalPort = 2008 tcpServer.ListenEnd Sub设置本地连接端口侦听是否有连接请求Private Sub tcpServer_ConnectionRequest(ByVal requestID As Long)If tcpServer.State sckClos
17、ed ThentcpServer.ClosetcpServer.Accept requestIDEnd IfEnd SubPrivate Sub Command1_Click()点击按钮发送数据tcpServer.SendData txtSendData.TextEnd Sub接收响应连接请求Private Sub tcpServer_DataArrival(ByVal bytesTotal As Long)接收数据Dim strData As StringtcpServer.GetData Tmp, vbStringTmp = TmptxtOutput.Text = Tmp 在接收文本框显示
18、接收数据源-于-网-络-收-集=Word行业资料分享-可编辑版本-双击可删=End Sub客户端程序如下:Private Sub cmdConnect_Click()获彳导IP地址发出连接请求tcpClient.Connect Text1.Text, 2008 txtOutput.Text = 恭喜您,已成功连接到服务器!提示连接成功End SubPrivate Sub Command1_Click() 点击发送数据tcpClient.SendData txtSendData.TextEnd SubPrivate Sub tcpClient_DataArrival(ByVal bytesTot
19、al As Long)接收数据Dim strData As StringtcpClient.GetData Tmp, vbStringTmp = TmptxtOutput.Text = Tmp 在接收文本框显示接收数据End SubPrivate Sub Command2_Click() 关闭连接txtOutput.Text = 您已断开连接+ Chr$(13) + Chr$(10) + txtOutput.Text tcpClient.Close End Sub换行输出六、测试数据和结果源-于-网-络-收-集=Word行业资料分享-可编辑版本-双击可删=图2总结从12月29号到1月10号我们
20、进行了为期两周的课程设计,令我受益匪浅。计算机通信网络是一 个热门的课题,也是很深很广的一个发挥平台。网络互连的实现,不仅可使用户能够更好地实现资源 共享,消除地理位置的差异,而且可以从整体上提高网络的效益和各种性能。我所选的题目是基于 VB的点对点通信,是使用 Winsock控件来实现的。从开始选题到最后老师验 收,我都本着认真的心态和钻研的态度,亲力亲为,所以我的感受颇深。虽然最后程序有些粗糙和不 尽人意,但我对自己在过程中所收获的知识还是感到很高兴。下面我来总结下自己这两周的设计感想。我认为在设计前应先弄清楚课程设计的目的,它并不是让我们在机房上网学会拷贝别人的实验成 果,而是在于通过理论与实际的结合、人与人的沟通,进一步提高思想觉悟,尤其是观察、分析和解 决问题的实际工作能力,以便培养成为能够主动适应社会主义现代化建设需要的高素质的复合型人才。 作为整个学习体系的有机组成部分,课程设计是我们运用学习成果,检验学习成果的一个最好的机会。接着开始思考自己的选题。首先我去图书馆借了很多相关资料,因为以前没有使用过VB,所以感觉很陌生。通过查阅资料,对于课题有了一个大概轮廓。要实现点对点通信,就必须在两台计算机上 安装两个应用程序便于连接和接发信息,一个作为客户端,一个作为服务器,通过控件的几个主要事 件来实现。其中要掌握的基本概念有:事件驱动、控件
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年陕能(庆阳)能源开发有限公司招聘15人笔试参考题库附带答案详解
- 朝阳师范高等专科学校《程序设计课程设计》2023-2024学年第二学期期末试卷
- 郑州科技学院《锻压工艺及设备》2023-2024学年第二学期期末试卷
- 蚌埠学院《药学综合技能》2023-2024学年第二学期期末试卷
- 安徽大学江淮学院《大数据新闻》2023-2024学年第二学期期末试卷
- 苏州卫生职业技术学院《测试技术与传感器》2023-2024学年第二学期期末试卷
- 海南外国语职业学院《医学影像成像理论》2023-2024学年第二学期期末试卷
- 辽宁省交通高等专科学校《播音主持创作基础(一)》2023-2024学年第二学期期末试卷
- 武汉信息传播职业技术学院《电网调度与运行及案例分析》2023-2024学年第二学期期末试卷
- 荆楚理工学院《铸造合金及其熔炼》2023-2024学年第二学期期末试卷
- 2024届新高考数学大题训练:数列(30题)(解析版)
- 福建省能源石化集团有限责任公司招聘笔试题库2024
- 2024年安徽省高考政治+历史+地理试卷(真题+答案)
- “两弹一星”精神弘扬与传承智慧树知到期末考试答案章节答案2024年青海师范大学
- 2024年江苏省盐城市中考数学试题(原卷版)
- 中医内科学:汗证
- 房产土地税培训课件
- 电子行业研发工程师劳动合同范本
- 法律法规合规性评价记录表
- 能源英语面面观 知到智慧树网课答案
- 电脑时代需要练字辩论材料
评论
0/150
提交评论