VB开发客户服务器软件的设计与实现.doc_第1页
VB开发客户服务器软件的设计与实现.doc_第2页
VB开发客户服务器软件的设计与实现.doc_第3页
VB开发客户服务器软件的设计与实现.doc_第4页
VB开发客户服务器软件的设计与实现.doc_第5页
全文预览已结束

下载本文档

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

文档简介

VB开发客户服务器软件的设计与实现摘 要 本文介绍了TCP/IP协议和客户/服务器程序的基本原理,给出了利用Visual Basic6.0开发客户/服务器软件的设计方法;最后给出了应用实例。关键词 VB TCP/IP协议 Winsock控件 客户/服务器1 引言随着网络通信的兴起与迅速发展,TCP/IP协议已成为计算机网络中最主要的传输协议,TCP/IP传输协议也越来越为人所熟知。目前的Internet 网就是基于TCP/IP协议的互联网络。TCP/IP除了用于广域外,在局域网中也广泛应用。TCP是传输控制协议,它提供了一种可靠的、面向会话连接的数据流服务,它可以在一个分组可能发生丢失、破坏、重复、延迟和乱序的不可靠物理网络之上通过确认、流控、复用同步等自动纠错技术提供一种可靠的进程间通信机制,从而充分保证用户数据传送的可靠和有序性。使用TCP协议通信时,TCP建立并控制数据发送方与接收方的会话关系,当接收方正确收到数据后,必须向发送方发送确认信息。如果发送方在指定时间内未能收到确认信息,将重发数据包。IP指分组交换协议,是联网的主机之间定义数据包传送路由的规则,它的基本任务是通过网络传送数据报,各个IP数据报之间是相互独立的。IP本身没有连接协议,在交换数据前不会建立会话关系。IP收到数据后也不确认,发送方和接收方都不检测数据传输的正确性。所以仅有IP是不可靠的,不能确保正确传输数据。TCP与IP的组合则构成了功能完整的传输协议。在TCP/IP网络应用中,多数网络应用程序是使用客户/服务器模型方式,客户向服务器发出服务请求,服务器作出应答响应,服务器通常在一个众所周知的地址侦听客户向服务器发出的请求,服务进程这时一直是处于休眠状态,直到有一个客户程序提出连接请求。服务器作出应答,并为客户提供相应的服务。客户/服务器模型最重要的特点是非对等相互作用,客户与服务器处于不平等的地位。服务器拥有客户机所不具备的各种软硬件资源和运算处理能力,服务器提供服务,客户请求服务,这种模式适应了网络资源、运算能力、信息分布不均等现象,成为IP应用的主要模式。Internet中的WWW、FTP、Telnet、E-mail等许多典型应用都是采用客户/服务器模型方式。Visual Basic是Windows环境下简单、易学、高效的可视化编程语言开发系统,以其所见即所得的可视化界面设计风格和32位面向对象的程序设计等特点,已广泛地应用于各个领域,是很多计算机软件开发人员采用的开发工具。VB不但提供了良好的界面设计能力,而且在网络通信方面的功能也很强。采用VB开发网络通信应用软件十分方便,尤其软件界面设计非常便捷,编程工作量较小,开发周期短。Visual Basic6.0中提供了Winsock控件,用于支持网络中两台以上计算机之间进行通信。Winsock控件提供了多样化的属性和方法来实现网络通信。通过设置Winsock控件属性及调用控件方法就能够实现TCP或UDP方式的网络通信。因此,使用Winsock控件编写网络通信程序的过程,实际上就是设置Winsock控件属性和调用控件方法的过程。利用这个控件,编程人员可以轻松地编写出TCP/IP客户服务器程序。2 Winsock控件Winsock控件是不可视控件,它提供了访问TCP和UDP网络服务非常简便的途径,使编程人员开发客户/服务器应用程序时,不必了解TCP的细节或调用低级的WinsockAPIs函数,只通过设置Winsock控件的属性并调用其方法,就可直接连接到一台远程计算机进行,并可实现双向数据交换。Microsoft Access、Visual Baisc、Visual C+或Visual FoxPro都可用其编写客户服务器程序。如果访问TCP传输控制协议服务功能,则须建立连接并实现主机间点对点通信。如果访问UDP数据文报协议功能,则不建立连接,发送数据将以广播方式上网传输。3 TCP/IP客户服务器程序设计方法使用TCP/IP协议通讯,首先要指定通信方式为TCP方式,将Winsock控件的Protocol属性设置为sckTCPProtocol。然后,按TCP通信协议规定,先要申请建立网络连接,然后才能传输数据。31服务器程序开始侦听网络服务器程序窗体中有三个Winsock控件,Name分别为sckServer、sckBusy和sckListen。其中sckListen是侦听控件;sckBusy是;sckServer连接控件。侦听控件和连接控件不能是同一个Winsock控件。服务器程序必须首先侦听网络,等待客户的连接申请,才有可能建立网络连接。服务器程序开始侦听网络前,需要为侦听用(sckListen)控件的LocalPort属性设置通信接口,然后调用Listen方法。服务器程序开始侦听网络的程序代码如下:sckListen.LocalPort=4477sckListen.Listen侦听网络32客户程序申请连接当服务器程序已经启动运行并开始侦听网络后,在客户程序申请连接前,需要为客户Winsock控件的RemodeHost属性设置远程主机,为RemodePort属性设置通信接口,然后再调用Connect方法向服务器程序申请连接。设置远程主机名,可以是计算机名也可是IP地址。如果是主机计算机名,则需要系统翻译为相应的IP地址;如果是主机IP地址,则直接进行连接。申请连接的程序代码如下:sckClient.Protocol = sckTCPProtocol 设置协议为TCP方式IP地址代表本机,与本机的实际地址无关sckClient.RemoteHost = 设置远程主机接口号,该值必须与设置远程主机服务器程序的接口号一致sckClient.RemotePort = 4477sckClient.Connect 申请连接33服务器程序应答连接请求服务器程序启动侦听网络后,当客户程序执行Connect方法申请连接时,服务器程序的侦听控件(sckListen)触发ConnectionRequest事件,并传递连接请求句柄。编程人员需要在该当事件程序中调用连接控件(sckServer)的Accept方法实现连接。服务器程序应答连接的程序代码如下:Private Sub sckListen_ConnectionRequest(ByVal requestID As Long) sckServer.Accept requestID应答连接请求End Sub当服务器程序执行Accept方法建立连接后,客户程序中的接连控件将触发Connect事件通报连接完成,否则触发Error事件通报连接失败。可以在该事件程序中加入连接后的处理程序。如果要求服务器程序支持多用户连接,则需要创建Winsock控件数组,在连接时动态生成Winsock控件与客户程序建立连接。程序代码应修改如下:Private Sub sckListen_ConnectionRequest(ByVal requestID As Long) Dim i As Long If CurNumberMaxNumber Then MaxNumber为最大连接数,CurNumber为当前连接数 For i = 1 To CurNumber If sckServer(i).State = 0 Then 判断是否有空闲Winsock控件 Exit For End If Next i If i = CurNumber Then CurNumber = CurNumber + 1 i = CurNumber End If Load sckServer(i) 动态加载Winsock控件 sckServer(i).Accept requestID Exit Sub End If sckBusy.Close sckBusy.Accept requestID End Sub34传送数据当服务器程序和客户程序连接成功后,可以开始传送数据。建立连接后的服务器程序和客户程序都可以发送或接收数据。当一方要发送数据时,调用SendData方法。 Dim SendStr As String SendStr = “连接成功!” Winsock1.SendData SendStr传送数据如果一方发送了数据,在连接的另一方控件将产生DataArrival事件,在DataArrival事件处理程序中需要调用GetData方法接收数据。接收数据类型必须与发送数据的类型一致方可正确接收数据。接收数据的程序代码如下: Dim RecStr As String sckClient.GetData RecStr Print RecStr35关闭连接当应用程序结束数据传送后,必须关闭连接,释放系统资源。当连接的一方关闭连接时,可以调用Close方法。关闭连接程序代码如下:sckClient.Close 关闭连接一方执行关闭连接后,在连接的另一方控件将产生Close事件。程序需要处理事件,完成关闭连接的最后工作。该事件的处理代码如下:Private Sub sckServer_Close() sckServer(Index).Close 释放接连 Unload sckServer(Index) 删除控件 End Sub4 使用UDP通信方式程序设计方法UDP用户报文协议是一个无连接协议,与TCP协议操作不同,UDP协议不使用报文确认机制,不对报文排序,不进行流控,因而UDP报文可能出现丢失、重复、乱序等现象,但由于它的前期工作比TCP少,计算机不建立连接,因而可以迅速地展开通信,一般用于传输少量不重要的数据和信息。Winsock控件的UDP通信方式是一种广播方式,当UDP主机发送数据时,网络上所有其它主机都能收到数据,UDP通信比TCP方式简单,由于UDP不需要连接,所以没有申请连接和关闭连接的过程。UDP发送者忽略接收者是否实际收到数据,而接收者也忽略发送者是否已发送了数据。这使编写UDP通信方式的网络程序非常简单。41 设置服务器程序中Winsock控件的属性在服务器程序中,需要为Winsock控件的LocalPort属性设置通信接口: sckserver.LocalPort=447742 客户程序发送数据当UDP主机要发送数据时,可调用SendData方法。发

温馨提示

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

最新文档

评论

0/150

提交评论