VB_WinSock网络编程

  • 格式:docx
  • 大小:44.59 KB
  • 文档页数:6

VB Win Sock网络编程(河南科技学院计科系001班,河南新乡453003 )摘要本文通过对一个VB实例开发过程的介绍,阐述了VB程序开发的一般方法。

并且在文中详细地介绍了客户端/服务器(C/S)模型,以及在VB 网络程序开发中对C/S模型的应用。

另外,文中介绍了VB中Win Sock控件的具体用法,以及VB中Win Sock的各个属性和方法的设置与使用方法。

除此以外,本文还有VB程序设计后期的异常处理与调试的方法的介绍。

关键词VB程序开发,C/S模型,VB程序调试,异常处理,Win Sock控件ABSTRACT During the deve lopment p rocess of a exa mple edited by the VB p rogram, it gives usa way about the p rogram deve lopment of VB. It also interpret the clie nt/server model exp licitly andhow to comp iler we use it. In the text it has the sp ecific way about the con trol unit in the Win Sock,in cludi ng the every attribute and sett ing the method. Excep ti ng it i ntroduces the exce pti on han dli ngafter the desig n for a p rogram and the method of the p rogram debugg ing.Keywords VB program development, Client/Server Model, VB program debugging, Exceptionhan dli ng. Win Sock control1引言随着网络的发展,计算机应用、软件开发都有了一个新的发展方向一一网络。

所以,随之而来的,网络软件的开发,也成了一个新的焦点。

而作为一个简单而实用的编程语言一一VB,对网络软件开发自然也有它的独到之处,不管是对C/S模型的方便使用,还是对WindowsSockets的优化封装,都给我们提供了更方便的编程环境,本文将介绍在VB编程过程中遇到错误时的调试方法,以及各序运行时对产生的异常错误的处理方法。

如图所示,是一个简单的C/S模型参考图。

在上图中,我们可以明显的看到,一个服务器可以同时与多个客户机连接,在其中起到服务器的作用。

不难看出,客户端程序依靠于服务器程序存在,通过服务器程序与其他客户进行数据的交换,所以,在C/S模型中,Server起着重要的作用,在一个C/S模型下形成的软件中,缺少了Server,单单的Client是不能运行的。

对于采用C/S模型的软件,是由客户端和服务器端共同存在的,在整个软件的运行过程中,有个先后的顺序,必须由如下的顺序运行:1.首先服务器要启动,初始化服务器程序,等待客户机的请求;2.客户机启动,向服务器发送连接请求(TCP)或是直接发送登陆数据(UDP);3.在允许的范围内,等待所有用户的加入;4.客户机完成所需功能,退出程序;5.服务器确认所有用户都已退出,结束程序运行。

C/S模型初步实现了软件的分布式,C/S模型中的服务器有时候也可以认为是后台程序,即运行于后台,向Client提供服务。

3 Win Sock 控件3.1Win Sock控件简介Socket(套接字)最初是由加利福尼亚大学Berkeley分校为UNIX操作系统开发的网络通信接口,随着UNIX操作系统的广泛使用,Socket成为当前最流行的网络通信应用程序接口之一。

20 世纪20 年代初,由Sun Microsystems, JSB, FTP, software, Microdyne 和Microsoft 的几家公司共同制定了一套标准,即Win dows Sockets规范,简称Win Sock。

而Win Sock控件是一个ActiveX 控件,它所对应的文件是Win dows安装目录下的\System\MsWi nSck.ocx,在VB中使用Win Sock控件之前,必须在工程中加入Microsoft Win Sock Control 控件。

Win Sock控件是对Win Sock进行的封装,允许我们使用两个著名传输层协议:一种协议是TCP(Transmission Control Protocol,传输控制协议),另一种协议是UDP( User DataGram Protocol,用户数据报协议).Win Sock控件的工作原理是这样的:服务器端不停地监听检测客户端的请求,客户端则向服务器端发送连接请求,当两者的协议沟通时,客户端和服务器端之间就建立起了连接。

这时候,客户端继续请求服务器发送或者接受数据,服务器则在等待客户端的这些请求。

一旦请求被接纳,客户端和服务器端就可以实现双向数据传输了。

3.2Win Sock控件的主要属性和方法(1) P rotocol属性:用于设置Win Sock所使用的协议类型,TCP协议对应于常量sckTC PP rotocol , UDP协议对应于常量sckUDPProtocol。

⑵SocketHandle属性:返回当前Socket连接的句柄,是一个只读属性,常用于将句柄传给Windows Socket API 。

⑶RemoteHostIP属性:返回远程计算机的IP,为只读属性。

⑷ByteReceived属性:返回当前接收缓冲区中的字节数。

⑸State属性:用于返回Win Sock控件当前的状态。

Win Sock的各种状态如下表:(6) Bind UDPwskName.Bind [LocalPort][LocalIP](7) Liste n 方法:当使用TCP 协议时,创建一个 Win Sock 套接字以后将其处于监听状态。

(8) Connect 方法:在使用 TCP 协议与远程计算机建立连接时,使用该方法,其格式为: wskName.Connect RemoteHost,RemotePort(9) Accept 方法:用于 TCP 协议,服务器决定是否接受客户机的连接请求, 如果接受连接请求, 则可以用 Accept 方法。

(10) SendData 方法:用于发送数据。

(11) GetData 方法:当有数据到达时,使用该方法从缓冲区中接受数据,其格式为: wskName.GetDatadata[,type][,maxlen] ,其含义是从缓冲区取出最大长度为 maxlen 的数据,并 以type 为类型,保存到data 中。

(12) PeekData 方法:功能与GetData 类似,但是PeekData 去完数据后不把相应的缓冲区清空。

3.3WinSock 控件的主要事件(1) ConnectRequest 事件:当使用TCP 协议时,在服务器端得到客户端的连接请求时触发。

⑵SendProgress 事件:当一端计算机向另一端计算机发送数据时,SendProgress 事件触发,可以记载当前已发送的字节数与剩余的字节数。

⑶SendComplete 事件:当所有的数据传送完毕时,触发该事件。

(4) DataArrival 事件:当远程数据到来时,控件触发该事件,往往在该事件中设置接收数据的 代码。

(5) Error 事件:当发生错误时触发,可返回错误序号。

3.4WinSock 的使用技巧WinSock 控件在使用的过程中有很多的技巧, 下面就我个人在使用过程中的使用经验作以 简单的介绍。

(1) 使用前必须进行初始化,这一过程往往在代码为:Provide Sub Form1_Load() SckName.LocalPort = localport SckNmae.ListenEnd Sub作为 UDP 使用时,代码为:Provide Sub Form1_Load()SckName.LocalPort = localport SckName.Bind ‘或者如下代码也可实现 ‘ SckName.Bind localport其他需要初始化的程序End Sub(2)可以为传送的数据进行编码, 以使不同的编码代表不同的功能。

比如,在一个聊天系统中, 可以让传送的数据分别以“”和“”开头,代表发送的分别为聊天信息和登陆信息。

(3)在初始化控件时,加入差错控制语句,对出现的差错进行处理。

代码如下:Provide Sub Form1_Load() On Error Goto ERR‘对 WinSock 控件或其他对象初始化Form_Load 事件中进行处理,在 TCP 模式下的为其分配本地端口使 WinSock 控件进入监听状态 其他需要初始化的程序为其分配本地端口 将其梆定在该端口 设置陷阱,处理差错差错处理代码End Sub4 VB 程序调试技巧程序开发的后期,调试已经成为一个不可忽略的步骤。

是否可以在调试的过程中快速的找到问题的所在,是能否快速排除问题,完成软件的关键。

下面将我个人在VB 中使用中的一 些关于测试的经验给以介绍。

首先介绍VB 中的错误类型,VB 中的错误类型分为三类:语法错误,执行错误和逻辑错 误。

其中语法错误如:Exit SubERR:pFoTBF |CIi ckZJFrigate Sub F Qirrrt_Cli ok () prill "hello 汗 Ezid Sub ~A 褊译墙误:子程序或唾数未走义 确定 I 帮助⑩Form_Click 事件中的 Print 是VB中的语法错误。

另一类是执行错误,如下:方法出现了拼写错误,提示为“子程序或函数未定义” ,这就习[ClickTrivate Sub F jrm_Click 0 Iim i As InUfer i = 100Do Ihili i > 0-Z1Sqr Ci JfrintLoopEnd Sub , ----. ..... B.3eei9<417;7 S1577?105£6082762530:实玳昔误'5-; 无效的过程调用或参数帮助Qt)在上面的例子中出现“实时错误,无效的过程调用或函数” 求平方根时,提示出错,即执行错误。

逻辑错误是在运行的过程中没有提示错误,而程序执行的结果与希望的结果不同,也就 是程序在逻辑上发生了错误,这类错误在调试的过程中最难能发现。

如 :运 算符使用不正确,语句的次序不对、循环语句的起始、终值不正确等。