首页 Winsock控件使用手册

Winsock控件使用手册

举报
开通vip

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

Winsock控件使用手册
Winsock控件使用手册 Winsock控件使用手册 本文使用Word2000排版,如你阅读时版面较凌乱,请使用Word2000阅读。 Winsock控件对用户是不可视的,可以很容易地访问TCP和UDP网络服务。TOM注:制作网络通讯软件,应该没有比VB+WINSOCK控件更简单的方案了吧? 其可以被Microsoft Access, Visual Basic ,Visual C++或Visual FoxPro开发人员使用。 用Winsock控件编写客户和服务器应用程序,不需要了解TCP或调用底层Winsock API的具体细节。 通过设置Winsock控件的属性和调用该控件的方法,可以很容易地连接到远程计算机并进行双向的数据交换。 TCP基本知识 TCP(Transfer Control Protocol)允许你创建并维护一个与远程计算机的连接,使用该连接,两台计算机之间就可以交换数据了。 如果你在创建一个客户应用程序,你必须知道服务器计算机的名字T注:建议用IP地址或IP地址(RemoteHost属性),以及要监听的端口号(RemotePort属性),然后调用Connect方法。 如果你在创建一个服务器应用程序,设置要监听的端口号(LocalPort属性),调用Listen方法。当客户建立连接请求时,产生ConnectionRequest事件。要完成该连接,在ConnectionRequest事件中调用Accept方法。 一旦建立了连接,两台计算机之间就可以发送和接受数据了。要发送数据,调用SendData方法。当接受数据时,产生DataArrival事件。在DataArrival事件中调用GetData方法来检取数据。 UDP基本知识 UDP(User Datagram Protocol)是无连接的 协议 离婚协议模板下载合伙人协议 下载渠道分销协议免费下载敬业协议下载授课协议下载 。 与TCP操作不同,计算机并不建立一个连接。并且,UDP应用程序可以是客户也可以是服务器。 要传输数据,首先设置客户计算机的LocalPort属性。服务器计算机T注:实际含义是指发送方只需要将RemoteHost属性设置为客户计算机T注:实际上的意思是指接收方的IP地址,将RemotePort属性设置为客户计算机上的LocalPort属性值,然后调用SendData方法开始发送数据。客户计算机在DataArrival事件中使用GetData方法检取数据。 Winsock控件的属性 BytesReceived属性, LocalHostName属性, LocalIP属性, LocalPort属性, RemoteHost属性(ActiveX控件), SocketHandle属性, State属性(Winsock控件), Protocol属性(Winsock控件), Name属性, Parent属性, RemoteHost属性(ActiveX控件), 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事件, SendProgress事件T注:该事件表示开始发送了,发送中,好像一般用不到,所以没有说明 Error事件, Connect事件(Winsock控件), Connect事件。 请参阅可捕获的Internet Transfer 控件错误,使用Winsock控件。 以下的内容以字母为序排列 Accept方法 只对于TCP服务器应用程序适用。 该方法用于在处理ConnectionRequest事件时接受连入请求。 应用于Winsock控件。 语法object.Accept requested object是Winsock控件的对象表达式。 数据类型Long 返回值Void 说明 在ConnectionRequest事件中使用Accept方法。 ConnectionRequest事件相应的参数RequestID也应传递给Accept方法。下面是一个例子: Private Sub Winsock1_ConnectionRequest _(ByVal requestID As Long) ' Close the connection if it is currently open ' by testing the State property. If Winsock1.State <> sckClosed Then Winsock1.Close ' Pass the value of the requestID parameter to the' Accept method. Winsock1.Accept requested End Sub T注:该例写得不是太好,应在新的控件实例中使用该方法,即动态地加载(LOAD)一个新的WINSOCK控件,用新控件而不是处于监听状态的控件去连接 请参阅Connect方法,ConntectionRequest事件。 下面示例的例子列出了使用TCP连接Winsock控件必须的代码,使用RequestID标识请求,该参数传递给接受请求的Accept方法。 Private Sub WinsockTCP_ConnectionRequest _(requestID As Long) If Winsock1.State <> sckClosed Then Winsock1.Close Winsock.Accept requested End Sub T注:这就对了!请注意,这次换了个新的SOCK来进行连接,但好像又少了个ENDIF!唉,真是误人子弟:) Bind方法 指定TCP连接中使用的LocalPort和LocalIP。T注:该用法比较少见,更多的是用在UDP通讯中,指定服务器驻守的端口如果你有多个协议适配器,使用该方法。应用于Winsock控件。 语法 object.Bind LocalPort, LocalIP Bind方法的语法有如下几个部分: 部分 描述 object 一个Winsock控件的对象表达式 localPort 建立连接所使用的端口号 localIP 建立连接所使用的本地IP地址 说明 在调用Listen方法之前你必须调用Bind方法T注:未必:)在UDP通讯的服务器端,倒是要先调用BIND方法! 请参阅RemoteHost属性(ActiveX控件),RemotePort属性(ActiveX控件)。 BytesReceived属性 返回接受数据的数量(当前接受缓冲区中的数据)。使用GetData方法检取数据。在 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 时不可用, 在运行时是只读的。 应用于Winsock控件。 语法object.BytesReceived object是Winsock控件的对象表达式。 返回值Long 请参阅DataArrival事件。 Close事件 当远程计算机关闭连接T注:只有TCP是“连接”的,UDP是无“连接”的,或者反过来说,本手册说“连接”时都是指的TCP时产生该事件。应用程序应使用Close方法正确地关闭一个TCP连接。 应用于Winsock控件。 语法object_Close() object是Winsock控件的对象表达式。 参数 没有 请参阅Close方法(Winsock控件)。 Close方法 关闭客户或服务器应用程序的TCP连接或监听插槽。 应用于Winsock控件。 语法object.Close object是一个Winsock控件的对象表达式。 参数 没有 返回值 Void 请参阅Close事件。 Connect 事件 当一个 Connect 操作完成时发生。 应用于Winsock控件。 语法object.Connect() object 置换元代表一个对象表达式,其值是一个 Winsock 控件。说明使用 Connect 事件确认已经成功建立了T注:该事件很重要,建议使用该事件而不是别的方法(如STATE的值)来判断一个连接是否已经成功 Connect方法 返回与远程计算机的连接T注:就是去连接! 应用于Winsock控件。 语法object.Connect remoteHost, remotePort Connect方法的语法有如下几个部分: 部分 描述 object 一个Winsock控件的对象表达式 remoteHos 要连接的远程计算机的名字 remotePort 要连接的远程计算机的端口号 返回值 没有 说明 当试图建立一个TCP连接时,你必须调用Connect方法。 请参阅Accept方法,ConnectionRequest事件,RemoteHost属性(ActiveX控件),RemotePort属性(ActiveX控件)。 ConnectionRequest事件 当远程计算机请求一个连接时产生该事件。只对于TCP服务器应用程序适用。 当有一个连入请求时就触发该事件。 该事件触发之后,RemoteHostIP和RemotePort属性中保存了客户机的信息。 应用于Winsock控件。 语法object_ConnectionRequest ( requestID As Long) ConnectionRequest事件的语法有如下几个部分: 部分 描述 object 一个Winsock控件的对象表达式 requested 连入请求标识符。 该参数应传递给第二个控件实例的Accept方法,说明服务器可以确定是否接受一个连入请求。如果没有接受连入请求,在客户将得到Close事件。 适用Accept方法(在新的控件实例中)接受连入请求。 请参阅Accept方法,Connect方法。 DataArrival事件 当新数据到达时产生该事件。 应用于Winsock控件。 语法object_DataArrival (bytesTotal As Long) DataArrival事件的语法有如下几个部分: 部分 描述 object 一个Winsock控件的对象表达式 bytesTotal 长整数:可以检取数据的总数 说明 如果你不在一次GetData调用中检取所有的数据则不产生该事件。只有当新数据到来时才触发该事件。可以使用BytesReceived属性检查可检取数据的数量。 请参阅BytesReceived属性,SendData方法,SendComplete事件,SendProgress事件。 下面示例的例子在Winsock控件的DataArrival事件中使用了GetData方法。当产生该事件时,代码调用GetData方法检取数据并将其保存在一个字符串中。然后将数据写入一个TextBox控件。 Private Sub Winsock1_DataArrival _(ByVal bytesTotal As Long) Dim strData As String Winsock1.GetData strData, vbString Text1.Text = Text1.Text & strData End Sub Error事件 后台进程发生错误时产生该事件(如连接失败,后台发送或检取数据失败等)。 应用于Winsock控件。 语法object_Error(number As Integer, Description As String, Scode As Long,Source As String, HelpFile as String, HelpContext As Long, CancelDisplay AsBoolean). Error事件的语法有如下几个部分: 部分 描述 object 一个Winsock控件的对象表达式 number 一个整数,指定错误码请参阅“设置”中的常量 description 包含错误消息的字符串scode长 SCODEsource 描述错误源的字符串 HelpFile 包含帮助文件名的字符串 HelpContextHelp 文件环境 CancelDisplay 指明是否取消该显示动作缺省是False,显示缺省的错误消息。如果你不想使用缺省的错误消息,可以将其设置为True 设置 number值的设置如下: 常量 值 描 述 SckOutOfMemory 7 内存不足 SckInvalidPropertyValue 380 属性值无效 SckGetNotSupported 394 不能读取属性值 SckSetNotSupported 383 属性是只读的 SckBadState 40006 连接事务或请求的协议或 连接状态不正确 SckInvalidArg 40014 传递给函数的参数格式 不正确或范围不对 SckSuccess 40017 成功 SckUnsupported 40018 不支持的变量类型 SckInvalidOp 40020 对于当前的状态,该 操作不正确 SckOutOfRange 40021 参数超出了范围 SckWrongProtocol 40026 连接事务或请求的协议不正确 SckOpCanceled 1004 操作被取消 SckInvalidArgument 10014 请求的地址是广播地 址,但没有设置标记 SckWouldBlock 10035 插槽是非阻塞的,指 定的操作将被阻塞 SckInProgress 10036 过程中有阻塞的 Winsock操作 SckAlreadyComplete 10037 操作完成。过程中没 有阻塞的Winsock操作 SckNonRecoverableError 11003 不可恢复性错误 SckNoData1 1004 名字有效,所请求的类 型没有数据记录 GetData方法 检取当前的数据块,将其保存在一个Variant类型的变量中T注:实际上只有字符串/字节组两种类型,参见讲座的第四讲。 应用于Winsock控件。 返回值Void 语法object.GetData data [,type] [,maxLen] GetData方法的语法有如下几个部分: 部分 描述 object 一个Winsock控件的对象表达式 data 保存取回来的数据的地方/变量。 如果没有足够的空间保存数据,则data设置为Empty type,可选参数。要检取的数据类型,如“设置”中所示 maxLen,可选参数。在检取字节矩阵或字符串时指定检取长度。如果没有指定该参数,则检取字节矩阵或字符串中的所有数据。如果数据类型不是字节矩阵或字符串,则忽略该参数 设置 type值的设置如下: 描述 常量 Byte vbByte Integer vbInteger Long vbLong Single vbSingle Double vbDouble Currency vbCurrency Date vbDate Boolean vbBoolean SCODE vbError String vbString Byte矩阵 vbArray + vbByte 说明 通常在DataArrival事件中使用GetData方法,其包含了一个totalBytes参数。如果你指定的maxLen比totalBytes参数小,则将得到一个10040警告,表明其余数据将丢失T注:非万不得已,不要用该参数,应该一次性地将数据全部取回,再慢慢处理 Listen方法 创建一个插槽,并设置为监听模式。 该方法只适用于TCP连接。 应用于Winsock控件。 语法object.Listen object是一个Winsock控件的对象表达式。 参数 没有 返回值 Void 说明 当有连入请求时产生ConnectionRequest事件。 在处理ConnectionRequest事件时,应用程序应使用Accept(在新的控件实例)方法接受连接。 请参阅Connect方法,Close方法(Winsock控件)。 LocalHostName属性 返回本地计算机的名字。只读,在设计时不可用。 应用于Winsock控件。 语法object.LocalHost Name object是一个Winsock控件的对象表达式。 返回值 String LocalIP属性 返回本地计算机的IP地址。只读属性,在设计时不可用。 应用于Winsock控件。 语法object.LocalIP object是Winsock控件的对象表达式。 数据类型String LocalPort属性 返回或设置本地使用的端口。可读写,在设计时可用。 对于客户,这将指定发送数据的端口。如果应用程序不需要特定的端口,指定为0。在这种情况下,控件将随机选择一个端口。连接建立后,该本地端口就用于TCP连接。对于服务器,这是监听的本地端口。如果指定为0,则随机选用一个端口。在调用了Listen方法之后,属性包含了实际选中的端口。 应用于Winsock控件。 语法object.LocalPort=long object是一个Winsock控件的对象表达式。 数据类型 Long T注:讲座中好像搞错了,实际上长短均可:) 说明 通常使用端口0在两台计算机之间动态建立连接。例如,希望服务器回调的客户可以使用端口0随机选中一个端口号,该端口号将传递给远程的服务器。 PeekData方法 与GetData方法类似,只是其不从输入队列中删除数据。 应用于Winsock控件。 语法object.PeekData data [,type] [,maxLen] PeekData方法的语法有如下几个部分: 部分 描述 object 一个Winsock控件的对象表达式 data 保存取回的数据的地方/变量 如果没有足够的空间保存数据,则data设置为Empty。 type可选参数。要检取的数据类型,如“设置”中所示。缺省是vbArray+ vbByte maxLen可选参数。在检取字节矩阵或字符串时指定检取长度。如果没有指定该参数,则检取字节矩阵或字符串中的所有数据。 如果数据类型不是字节矩阵或字符串,则忽略该参数 设置 type值的设置如下: 描述 常量 Byte vbByte Integer vbInteger Long vbLong Single vbSingle Double vbDouble Currency vbCurrency Date vbDate Boolean vbBoolean SCODE vbError String vbString Byte矩阵 vbArray + vbByte 返回值 Void 说明 如果类型指定为vbString,则数据返回给用户之前转换为UUICODE。 请参阅GetData方法(Winsock控件)。 Protocol属性 返回或设置Winsock控件使用的协议,TCP或UDP。 应用于Winsock控件。 语法object.Protocol [=protocol] object是Winsock控件的对象表达式。 设置protocol值的设置如下: 常量 值 描述 sckTCPProtocol 0 缺省。使用TCP协议 sckUDPProtocol 1 使用UDP协议 返回值 Void 说明 在重新设置该属性之前必须关闭控件(使用Close方法)。 RemoteHostIP属性 返回远程计算机的IP地址。对于客户应用程序,使用Connect方法建立连接之后,该属性包含了远程计算机IP字符串。对于服务器应用程序,进来一个连接请求时,该属性包含了初始化请求的远程计算机的IP字符串。在使用UDP协议时,在DataArrival事件产生后,该属性包含了发送UDP数据的远程计算机的IP地址。 应用于Winsock控件。 语法object.RemoteHostIP object是Winsock控件的对象表达式。 数据类型String SendComplete事件 当发送操作完成时产生该事件。 应用于Winsock控件。 语法object_SendComplete object是一个Winsock控件的对象表达式。 参数 没有 请参阅DataArrival事件,SendProgress事件。 SendData方法 给远程计算机发送数据。 返回值Void 应用于Winsock控件。 语法object.SendData data SendData方法的语法有如下几个部分: 部分 描 述 object 一个Winsock控件的对象表达式 data 要发送的数据T注:只能发送字符串/字节组,对 于二进制数据,应使用字节矩阵 说明 当传递UNICODE字符串时,在发送之前转换为ANSI字符串。 SendProgress事件 在发送数据时产生该事件。 应用于Winsock控件。 语法object_SendProgress (bytesSent As Long, bytesRemaining As Long) SendProgress事件的语法有如下几个部分: 部分 描 述 object 一个Winsock控件的对象表达式 bytesSent 从上次触发该事件到现在已发送数据的字节数 bytesRemaining 在发送缓冲区中等待发送数据的字节数 请参阅DataArrival事件,SendComplete事件。 SocketHandle属性 返回一个值,该值与Winsock控件用来与Winsock层通信所用的插槽句柄相对应。该属性是只读的,在设计时不可用。 应用于Winsock控件。 语法object.SocketHandle object是一个Winsock控件的对象表达式。 数据类型 Long 说明 该参数将传递给Winsock API。 State属性 返回控件的状态,以枚举类型表示。该属性是只读的,在设计时不可用。 应用于Winsock控件。 语法object.State object是一个Winsock控件的对象表达式。 数据类型 Integer 设置 State属性的设置如下: 常量 值 描述 SckClosed 0 缺省。关闭 SckOpen 1 打开 SckListening 2 监听 SckConnectionPending 3 连接未决 SckResolvingHost 4 解析主机 SckHostResolved 5 主机被解析 SckConnecting 6 连接 SckConnected 7 已连接 SckClosing 8 对方在关闭连接 SckError 9 错误 T注:不要过于信任STATE属性,在可以用事件来判断的时候,应该以所触发的事件为准来判断当前的状态。
本文档为【Winsock控件使用手册】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_060444
暂无简介~
格式:doc
大小:60KB
软件:Word
页数:11
分类:互联网
上传时间:2010-10-04
浏览量:59