最新Winsock控件使用手册范本_第1页
最新Winsock控件使用手册范本_第2页
最新Winsock控件使用手册范本_第3页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

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

文档简介

1、Winsock控件使用手册本文使用Word2000排版,如你阅读时版面较凌乱,请使用 Word2000阅读。Winsock控件对用户是不可视的,可以很容易地访问 TCP和UDP网络服务 。 TOM注 :制作网络通讯软件,应该没有比 VB+WINSOC控件更简单的方案了 吧?其可以被 Microsoft Access, Visual Basic ,Visual C+ 或Visual FoxPro 开发人员使用。用Winsock控件编写客户和服务器应用程序,不需要了解TCP或调用底层 Winsock API的具体细节。通过设置 Winsock控件的属性和调用该控件的方法,可 以很容易地连接到远程计

2、算机并进行双向的数据交换。TCP基本知识TCP (Transfer Control Protocol )允许你创建并维护一个与远程计算机的连接,使用该连接,两台计算机之间就可以交换数据了。如果你在创建一个客户应用程序,你必须知道服务器计算机的名字T注: 建议用IP地址 或IP地址(RemoteHost属性),以及要监听的端口号(RemotePort属性),然后调用 Connect方法如果你在创建一个服务器应用程序,设置要监听的端口 号(LocalPort属性),调用Listen 方法。当客户建立连接 请求时,产生 ConnectionRequest事件。要完成该连接,在 ConnectionR

3、equest 事件中调用 Accept 方法。一旦建立了连接,两台计算机之间就可以发送和接受数 据了。要发送数据,调用SendData方法。当接受数据时,产生DataArrival 事件。在DataArrival 事件中调用GetData 方法来检取数据。UDP基本知识UDP( User Datagram Protocol )是无连接的协议。与TCP操作不同,计算机并不建立一个连接。并且,UDP应用程序可以是客户也可以是服务器。要传输数据,首先设置客户计算机的LocalPort属性。服务器计算机t注:实际含义是指发送方只需要将RemoteHost属性设置 为客户计算机 t注:实际上的意思是指接

4、收方 的IP地址,将 RemotePort 属性设置为客户计算机上的LocalPort属性值,然后调用SendData方法开始发送数据。 客户计算机在 DataArrival 事 件中使用GetData方法检取数据。Winsock控件的属性BytesReceived 属性,LocalHostName 属性,LocallP 属性,LocalPort 属性,RemoteHost 属性(ActiveX 控件),SocketHandle 属性,State 属性(Winsock 控件),Protocol 属性(Winsock 控件),Name属 性,Parent 属性,RemoteHost 属性(Act

5、iveX 控件), RemotePort 属性(ActiveX 控件), Index 属性(ActiveX 控件),Tag 属性(ActiveX 控件),Object 属性(ActiveX 控件)。Winsock控件的方法Accept 方法,Bind方法,Close 方法(Winsock 控件),Listen 方法,PeerData 方法,SendData 方法,GetData 方法(WinSock 控件),GetData 方法(ActiveX 控件)。Winsock控件的事件Close事件,ConnectionRequest 事件,DataArrival 事件,SendComplete 事件

6、,SendProgress 事件 t注:该事件表示开始发送了,发送中,好像一般用不到,所以 没有说明Error 事件,Connect 事件(Winsock 控件),Connect 事件。请参阅可捕获的Internet Transfer控件错误,使用Winsock 控件。以下的容以字母为序排列Accept方法只对于TCP服务器应用程序适用。该方法用于在处理 ConnectionRequest事件时接受连入 请求。应用于Winsock控件。语法 object.Accept requestedobject是Winsock控件的对象表达式。数据类型Long返回值Void说明在ConnectionReq

7、uest 事件中使用 Accept方法。ConnectionRequest 事件相应的参数 RequestID 也应传 递给Accept方法。下面是一个例子:Private Sub Win sock1_Co nn ectio nRequest _(ByVal requestID As Long)'Close the connection if it is currently open'by test ing the State property.If Win sock1.State <> sckClosed The nWin sock1.ClosePass the

8、value of the requestID parameter to the' Accept method.Win sockl.Accept requestedEnd SubT注:该例写得不是太好,应在新的控件实例中使用该方法,即动态地加载(LOAD 个新的 WINSOCK控件,用新控件而不是处于监听状态的控件去连接请参阅 Connect 方法,ConntectionRequest 事件。下面示例的例子列出了使用TCP连接Winsock控件必须的代码,使用 RequestID标识请求,该参数传递给接受请求 的Accept方法。Private Sub Win sockTCP_C onn

9、 ectio nRequest _(requestlD As Long)If Win sock1.State <> sckClosed The nWin sock1.CloseWin sock.Accept requestedEnd SubT注:这就对了!请注意,这次换了个新的SOCK来进行连接,但好像又少了个 ENDIF唉,真是误人子弟:)Bi nd方法指定TCP连接中使用的 LocalPort 和LocalIP 。T注:该用法 比较少见,更多的是用在 UDP通讯中,指定服务器驻守的端口 如果你有多个协议适配 器,使用该方法。应用于Winsock控件。语法object.Bind

10、LocalPort, LocalIPBind方法的语法有如下几个部分:部分描述localPort建立连接所使用的端口号locallP建立连接所使用的本地 IP地址说明在调用Listen方法之前你必须调用Bind方法t注:未必:)在UDP通讯的服务器端,倒是要先调用 BIND方法!请参阅 RemoteHost 属性(ActiveX 控件),RemotePort 属性(ActiveX控件)。BytesReceived 属性返回接受数据的数量(当前接受缓冲区中的数据)。使用GetData方法检取数据。在设计时不可用,在运行时是只读的。应用于Winsock控件。语法 object.BytesRecei

11、vedobject是Winsock控件的对象表达式。返回值Long请参阅DataArrival 事件。Close事件当远程计算机关闭连接T注:只有TCP是“连接”的,UDP是无“连接”的,或者反过来说,本手册说“连接”时都是指的TCP时产生该事件。应用程序应使用Close方确地关闭一个 TCP连接语法 object_Close()object是Winsock控件的对象表达式。参数 没有请参阅 Close方法(Winsock控件)。Close方法关闭客户或服务器应用程序的TCP连接或监听插槽。应用于Winsock控件。语法 object.Closeobject 是一个 Winsock控件的对象表

12、达式。参数没有返回值 Void请参阅Close事件。Connect 事件当一个Connect操作完成时发生。应用于Winsock控件。语法 object.Connect()object置换元代表一个对象表达式,其值是一个Winsock控件。说明使用 Connect事件确认已经成功建立了 T注:该事件很重要,建议使用该事件而不是别的方法(如STATE的值)来判断一个连接是否已经成Connect 方法返回与远程计算机的连接 T注:就是去连接!应用于Winsock控件。语法 object.Connect remoteHost, remotePortConnect方法的语法有如下几个部分:部分描述ob

13、ject一个Winsock控件的对象表达式remoteHos要连接的远程计算机的名字remotePort要连接的远程计算机的端口号返回值没有说明当试图建立一个 TCP连接时,你必须调用Connect方法。请参阅 Accept 方 法, ConnectionRequest 事 件,RemoteHost 属性(ActiveX 控件),RemotePort 属性(ActiveX 控件)。Conn ecti on Request 事件当远程计算机请求一个连接时产生该事件。只对于TCP服务器应用程序适用。当有一个连入请求时就触发该事件。该事件触发之后,RemoteHostIP和RemotePort属性中

14、保存了客户机的信息语法 object_ConnectionRequest ( requestID As Long)ConnectionRequest事件的语法有如下几个部分:部分描述object一个Winsock控件的对象表达式requested连入请求标识符。该参数应传递给第二个控件实例的Accept方法,说明服务器可以确定是否接受一个连入请求。如果没有接受连入 请求,在客户将得到 Close事件。适用Accept方法(在新的控件实例中)接受连入请求。 请参阅 Accept方法,Connect方法。DataArrival 事件当新数据到达时产生该事件。应用于Winsock控件。语法 obje

15、ct_DataArrival (bytesTotal As Long)DataArrival事件的语法有如下几个部分:部分描述object一个Winsock控件的对象表达式bytesTotal说明长整数:可以检取数据的总数如果你不在一次GetData调用中检取所有的数据则不产生该事件。只有当新数据到来时才触发该事件。可以使用 BytesReceived属性检查可检取数据的数量。请参阅 BytesReceived 属性,SendData 方法, SendComplete 事件,SendProgress 事件。下面示例的例子在 Winsock控件的DataArrival 事件中 使用了 GetDa

16、ta方法。当产生该事件时,代码调用GetData方法检取数据并将其保存在一个字符串中。然后将数据写入 一个TextBox控件。Private Sub Win sock1_DataArrival _(ByVal bytesTotal As Lon g)Dim strData As Stri ngWin sock1.GetData strData, vbStri ngText1.Text = Text1.Text & strDataEnd SubError事件后台进程发生错误时产生该事件(如连接失败,后台发 送或检取数据失败等)。应用于Winsock控件。语法 object_Error(n

17、umber As Integer, DescriptionAs String, Scode As Long,Source As String, HelpFile as String, HelpContext As Long, CancelDisplay AsBoolean).Error事件的语法有如下几个部分:部分描述object一个Winsock控件的对象表达式number一个整数,指定错误码请参阅“设置”中的常量description包含错误消息的字符串scode 长SCODEsource描述错误源的字符串HelpFile包含帮助文件名的字符串HelpContextHelp文件环境Canc

18、elDisplay 指明是否取消该显示动作 缺省是False,显示缺省的错误消息。如果你不想使用缺省的错误消息,可以将其设置为True设置number值的设置如下:常量值SckOutOfMemory 7Sckl nvalidPropertyValue 380SckGetNotSupported 394SckSetNotSupported 383 SckBadState40006Sckl nvalidArg40014SckSuccess40017SckU nsupported 40018描述存不足属性值无效不能读取属性值属性是只读的连接事务或请求的协议或连接状态不正确传递给函数的参数格式不正确或

19、围不对成功不支持的变量类型对于当前的状态,该Sckl nvalidOp40020SckOutOfRa nge40021参数超出了围SckWro ngProtocol40026连接事务或请求的协议不正确SckOpCa nceled1004操作被取消SckI nvalidArgume nt10014请求的地址是广播地址,但没有设置标记SckWouldBlock10035插槽是非阻塞的,指定的操作将被阻塞Sckln Progress10036过程中有阻塞的Win sock 操作SckAlreadyComplete10037操作完成。过程中没有阻塞的 Win sock操作SckNo nRecovera

20、bleError 11003不可恢复性错误SckNoData11004名字有效,所请求的类型没有数据记录GetData 方法检取当前的数据块,将其保存在一个Variant类型的变量中 T注:实际上只有字符串/字节组两种类型,参见讲座的第四讲。应用于Winsock控件。返回值Void语法 object.GetData data ,type ,maxLenGetData方法的语法有如下几个部分:部分描述object一个Winsock控件的对象表达式data保存取回来的数据的地方 /变量。如果没有足够的空间保存数据,则data设置为Emptytype,可选参数。要检取的数据类型,如“设置”中所 示m

21、axLen,可选参数。在检取字节矩阵或字符串时指定检 取长度。如果没有指定该参数,则检取字节矩阵或字符串中 的所有数据。如果数据类型不是字节矩阵或字符串,则忽略 该参数设置type值的设置如下:描述常量BytevbByteIntegervblntegerLongvbLongSinglevbSingleDoublevbDoubleCurrencyvbCurrencyDatevbDateBooleanvbBooleanStringvbStringByte 矩阵 vbArray + vbByte说明通常在DataArrival 事件中使用GetData方法,其包含 了一个totalBytes 参数。

22、如果你指定的 maxLen比 totalBytes 参数小,则将得到一个10040警告,表明其余数 据将丢失T注: 非万不得已,不要用该参数,应该一次性地将数据全部取回,再慢慢处理Listen 方法创建一个插槽,并设置为监听模式。该方法只适用于TCP连接。应用于Winsock控件。语法 object.Listenobject 是一个 Winsock控件的对象表达式。参数没有返回值 Void说明当有连入请求时产生 ConnectionRequest事件。 在处理ConnectionRequest事件时,应用程序应使用Accept (在新的控件实例)方法接受连接。请参阅 Connect方法,Clo

23、se方法(Winsock控件)LocalHostName属性返回本地计算机的名字。只读,在设计时不可用。应用于Winsock控件。语法 object.LocalHost Name object 是一个 Winsock控件的对象表达式。 返回值 StringLocallP 属性返回本地计算机的IP地址。只读属性,在设计时不可 用。应用于Winsock控件。语法 object.LocallPobject是Winsock控件的对象表达式。数据类型StringLocalPort 属性返回或设置本地使用的端口。可读写,在设计时可用。对于客户,这将指定发送数据的端口。如果应用程序不 需要特定的端口,指定为

24、 0。在这种情况下,控件将随机选 择一个端口。连接建立后,该本地端口就用于TCP连接。对于服务器,这是监听的本地端口。如果指定为0,则随机选用一个端口。在调用了Listen 方法之后,属性包含了实际选中的端口。应用于Winsock控件。语法 objectLocalPort = longobject 是一个 Winsock控件的对象表达式。数据类型LongT注:讲座中好像搞错了,实际上长短均可: )说明通常使用端口 0在两台计算机之间动态建立连接。例如,希望服务器回调的客户可以使用端口0随机选中一个端口号,该端口号将传递给远程的服务器。PeekData 方法与GetData方法类似,只是其不从输

25、入队列中删除数据。应用于Winsock控件。语法 object.PeekData data ,type ,maxLenPeekData方法的语法有如下几个部分:部分描述object一个Winsock控件的对象表达式data保存取回的数据的地方/变量如果没有足够的空间保存数据,则 data设置为Empty。type可选参数。要检取的数据类型,如“设置”中所示。缺省是 vbArray+ vbByte maxLen可选参数。在检取字节矩阵或字符串时指定检取长度。如果没有指定该参数,则检取字节矩阵或字符串中的 所有数据。如果数据类型不是字节矩阵或字符串,则忽略该参数 设置type值的设置如下:描述常量

26、BytevbByteIntegervbIntegerLongvbLongSinglevbSingleDoublevbDoubleCurrencyvbCurrencyDatevbDateBooleanvbBooleanSCODEvbErrorStringvbStringByte矩阵vbArray + vbByte返回值 Void说明如果类型指定为vbString ,则数据返回给用户之前转换为 UUICODE请参阅 GetData方法(Winsock控件)。Protocol 属性返回或设置 Winsock控件使用的协议,TCP或UDP应用于Winsock控件。语法 object.Protocol

27、=protocolobject是Winsock控件的对象表达式。设置 protocol值的设置如下:常量值描述sckTCPProtocol0缺省。使用TCP协议sckUDPProtocol1使用UDP协议返回值Void说明在重新设置该属性之前必须关闭控件(使用Close方法)。RemoteHostIP 属性返回远程计算机的IP地址。对于客户应用程序,使用Connect方法建立连接之后,该属性包含了远程计算机IP字符串。对于服务器应用程序,进来一个连接请求时,该属性 包含了初始化请求的远程计算机的IP字符串。在使用 UDP协议时,在DataArrival 事件产生后,该属性包含了发送 UDP数据的远程计算机的IP地址。应用于Winsock控件。语法 object.RemoteHostIPobject是Winsock控件的对象表达式数据类型StringSen dComplete事件当发送操作完成时产生该事件。应用于Winsock控件。语法 object_SendCompleteobject 是一个 Winsock控件的对象表达式参数没有 请参阅 DataArrival 事件,SendProgress 事件。Sen dData 方法给远程计算机发送数据。返回值V

温馨提示

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

最新文档

评论

0/150

提交评论