您好、欢迎来到现金彩票网!
当前位置:88彩票 > 服务器控件 >

VB开发客户服务器软件的设计与实现

发布时间:2019-05-02 00:20 来源:未知 编辑:admin

  随着网络通信的兴起与迅速发展,TCP/IP协议已成为计算机网络中最主要的传输协议,TCP/IP传输协议也越来越为人所熟知。目前的Internet 网就是基于TCP/IP协议的互联网络。TCP/IP除了用于广域外,在局域网中也广泛应用。

  TCP是传输控制协议,它提供了一种可靠的、面向会话连接的数据流服务,它可以在一个分组可能发生丢失、破坏、重复、延迟和乱序的不可靠物理网络之上通过确认、流控、复用同步等自动纠错技术提供一种可靠的进程间通信机制,从而充分保证用户数据传送的可靠和有序性。使用TCP协议通信时,TCP建立并控制数据发送方与接收方的会话关系,当接收方正确收到数据后,必须向发送方发送确认信息。如果发送方在指定时间内未能收到确认信息,将重发数据包。

  IP指分组交换协议,是联网的主机之间定义数据包传送路由的规则,它的基本任务是通过网络传送数据报,各个IP数据报之间是相互独立的。IP本身没有连接协议,在交换数据前不会建立会话关系。IP收到数据后也不确认,发送方和接收方都不检测数据传输的正确性。所以仅有IP是不可靠的,不能确保正确传输数据。TCP与IP的组合则构成了功能完整的传输协议。

  在TCP/IP网络应用中,多数网络应用程序是使用客户/服务器模型方式,客户向服务器发出服务请求,服务器作出应答响应,服务器通常在一个众所周知的地址侦听客户向服务器发出的请求,服务进程这时一直是处于休眠状态,直到有一个客户程序提出连接请求。服务器作出应答,并为客户提供相应的服务。客户/服务器模型最重要的特点是非对等相互作用,客户与服务器处于不平等的地位。服务器拥有客户机所不具备的各种软硬件资源和运算处理能力,服务器提供服务,客户请求服务,这种模式适应了网络资源、运算能力、信息分布不均等现象,成为IP应用的主要模式。Internet中的、Telnet、E-mail等许多典型应用都是采用客户/服务器模型方式。

  Visual Basic是Windows环境下简单、易学、高效的可视化编程语言开发系统,以其所见即所得的可视化界面设计风格和32位面向对象的程序设计等特点,已广泛地应用于各个领域,是很多计算机软件开发人员采用的开发工具。VB不但提供了良好的界面设计能力,而且在网络通信方面的功能也很强。采用VB开发网络通信应用软件十分方便,尤其软件界面设计非常便捷,编程工作量较小,开发周期短。

  Visual Basic6.0中提供了Winsock控件,用于支持网络中两台以上计算机之间进行通信。Winsock控件提供了多样化的属性和方法来实现网络通信。通过设置Winsock控件属性及调用控件方法就能够实现TCP或UDP方式的网络通信。因此,使用Winsock控件编写网络通信程序的过程,实际上就是设置Winsock控件属性和调用控件方法的过程。利用这个控件,编程人员可以轻松地编写出TCP/IP客户服务器程序。

  Winsock控件是不可视控件,它提供了访问TCP和UDP网络服务非常简便的途径,使编程人员开发客户/服务器应用程序时,不必了解TCP的细节或调用低级的WinsockAPIs函数,只通过设置Winsock控件的属性并调用其方法,就可直接连接到一台远程计算机进行,并可实现双向数据交换。Microsoft Access、Visual Baisc、Visual C++或Visual FoxPro都可用其编写客户服务器程序。

  如果访问TCP传输控制协议服务功能,则须建立连接并实现主机间点对点通信。如果访问UDP数据文报协议功能,则不建立连接,发送数据将以广播方式上网传输。

  使用TCP/IP协议通讯,首先要指定通信方式为TCP方式,将Winsock控件的Protocol属性设置为sckTCPProtocol.然后,按TCP通信协议规定,先要申请建立网络连接,然后才能传输数据。

  其中sckListen是侦听控件;sckBusy是;sckServer连接控件。侦听控件和连接控件不能是同一个Winsock控件。

  服务器程序必须首先侦听网络,等待客户的连接申请,才有可能建立网络连接。服务器程序开始侦听网络前,需要为侦听用(sckListen)控件的LocalPort属性设置通信接口,然后调用Listen方法。服务器程序开始侦听网络的程序代码如下:

  当服务器程序已经启动运行并开始侦听网络后,在客户程序申请连接前,需要为客户Winsock控件的RemodeHost属性设置远程主机,为RemodePort属性设置通信接口,然后再调用Connect方法向服务器程序申请连接。

  设置远程主机名,可以是计算机名也可是IP地址。如果是主机计算机名,则需要系统翻译为相应的IP地址;如果是主机IP地址,则直接进行连接。

  服务器程序启动侦听网络后,当客户程序执行Connect方法申请连接时,服务器程序的侦听控件(sckListen)触发ConnectionRequest事件,并传递连接请求句柄。编程人员需要在该当事件程序中调用连接控件(sckServer)的Accept方法实现连接。

  当服务器程序执行Accept方法建立连接后,客户程序中的接连控件将触发Connect事件通报连接完成,否则触发Error事件通报连接失败。可以在该事件程序中加入连接后的处理程序。

  如果要求服务器程序支持多用户连接,则需要创建Winsock控件数组,在连接时动态生成Winsock控件与客户程序建立连接。程序代码应修改如下:

  当服务器程序和客户程序连接成功后,可以开始传送数据。建立连接后的服务器程序和客户程序都可以发送或接收数据。当一方要发送数据时,调用SendData方法。

  如果一方发送了数据,在连接的另一方控件将产生DataArrival事件,在DataArrival事件处理程序中需要调用GetData方法接收数据。接收数据类型必须与发送数据的类型一致方可正确接收数据。接收数据的程序代码如下:

  当应用程序结束数据传送后,必须关闭连接,释放系统资源。当连接的一方关闭连接时,可以调用Close方法。关闭连接程序代码如下:

  一方执行关闭连接后,在连接的另一方控件将产生Close事件。程序需要处理事件,完成关闭连接的最后工作。该事件的处理代码如下:

  UDP用户报文协议是一个无连接协议,与TCP协议操作不同,UDP协议不使用报文确认机制,不对报文排序,不进行流控,因而UDP报文可能出现丢失、重复、乱序等现象,但由于它的前期工作比TCP少,计算机不建立连接,因而可以迅速地展开通信,一般用于传输少量不重要的数据和信息。Winsock控件的UDP通信方式是一种广播方式,当UDP主机发送数据时,网络上所有其它主机都能收到数据,UDP通信比TCP方式简单,由于UDP不需要连接,所以没有申请连接和关闭连接的过程。UDP发送者忽略接收者是否实际收到数据,而接收者也忽略发送者是否已发送了数据。这使编写UDP通信方式的网络程序非常简单。

  在服务器程序中,需要为Winsock控件的LocalPort属性设置通信接口:

  当UDP主机要发送数据时,可调用SendData方法。发送数据程序的代码如下:

http://wendevick.net/fuwuqikongjian/109.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有