您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 最新Winsock控件使用手册
1Winsock控件使用手册本文使用Word2000排版,如你阅读时版面较凌乱,请使用Word2000阅读。Winsock控件对用户是不可视的,可以很容易地访问TCP和UDP网络服务。TOM注:制作网络通讯软件,应该没有比VB+WINSOCK控件更简单的方案了吧?其可以被MicrosoftAccess,VisualBasic,VisualC++或VisualFoxPro开发人员使用。用Winsock控件编写客户和服务器应用程序,不需要了解TCP或调用底层WinsockAPI的具体细节。通过设置Winsock控件的属性和调用该控件的方法,可以很容易地连接到远程计算机并进行双向的数据交换。TCP基本知识TCP(TransferControlProtocol)允许你创建并维护一个与远程计算机的连接,使用该连接,两台计算机之间就可以交换数据了。如果你在创建一个客户应用程序,你必须知道服务器计算机的名字T注:建议用IP地址或IP地址(RemoteHost属性),以及要监听的端口号(RemotePort属性),然后调用Connect方法。2如果你在创建一个服务器应用程序,设置要监听的端口号(LocalPort属性),调用Listen方法。当客户建立连接请求时,产生ConnectionRequest事件。要完成该连接,在ConnectionRequest事件中调用Accept方法。一旦建立了连接,两台计算机之间就可以发送和接受数据了。要发送数据,调用SendData方法。当接受数据时,产生DataArrival事件。在DataArrival事件中调用GetData方法来检取数据。UDP基本知识UDP(UserDatagramProtocol)是无连接的协议。与TCP操作不同,计算机并不建立一个连接。并且,UDP应用程序可以是客户也可以是服务器。要传输数据,首先设置客户计算机的LocalPort属性。服务器计算机T注:实际含义是指发送方只需要将RemoteHost属性设置为客户计算机T注:实际上的意思是指接收方的IP地址,将RemotePort属性设置为客户计算机上的LocalPort属性值,然后调用SendData方法开始发送数据。客户计算机在DataArrival事件中使用GetData方法检取数据。3Winsock控件的属性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方法,4Close方法(Winsock控件),Listen方法,PeerData方法,SendData方法,GetData方法(WinSock控件),GetData方法(ActiveX控件)。Winsock控件的事件Close事件,ConnectionRequest事件,DataArrival事件,SendComplete事件,SendProgress事件T注:该事件表示开始发送了,发送中,好像一般用不到,所以没有说明Error事件,Connect事件(Winsock控件),Connect事件。请参阅可捕获的InternetTransfer控件错误,使用Winsock控件。5以下的内容以字母为序排列Accept方法只对于TCP服务器应用程序适用。该方法用于在处理ConnectionRequest事件时接受连入请求。应用于Winsock控件。语法object.Acceptrequestedobject是Winsock控件的对象表达式。数据类型Long返回值Void说明在ConnectionRequest事件中使用Accept方法。ConnectionRequest事件相应的参数RequestID也应传递给Accept方法。下面是一个例子:PrivateSubWinsock1_ConnectionRequest_(ByValrequestIDAsLong)'Closetheconnectionifitiscurrentlyopen'bytestingtheStateproperty.IfWinsock1.StatesckClosedThenWinsock1.Close'PassthevalueoftherequestIDparametertothe'Acceptmethod.Winsock1.AcceptrequestedEndSubT注:该例写得不是太好,应在新的控件实例中使用该方法,即动态地加载(LOAD)一个新的WINSOCK控件,用新控件而不是处于监听状态的控件去连接请参阅Connect方法,ConntectionRequest事件。下面示例的例子列出了使用TCP连接Winsock控件必须6的代码,使用RequestID标识请求,该参数传递给接受请求的Accept方法。PrivateSubWinsockTCP_ConnectionRequest_(requestIDAsLong)IfWinsock1.StatesckClosedThenWinsock1.CloseWinsock.AcceptrequestedEndSubT注:这就对了!请注意,这次换了个新的SOCK来进行连接,但好像又少了个ENDIF!唉,真是误人子弟:)Bind方法指定TCP连接中使用的LocalPort和LocalIP。T注:该用法比较少见,更多的是用在UDP通讯中,指定服务器驻守的端口如果你有多个协议适配器,使用该方法。应用于Winsock控件。语法object.BindLocalPort,LocalIPBind方法的语法有如下几个部分:部分描述object一个Winsock控件的对象表达式localPort建立连接所使用的端口号localIP建立连接所使用的本地IP地址说明在调用Listen方法之前你必须调用Bind方法T注:未必:)7在UDP通讯的服务器端,倒是要先调用BIND方法!请参阅RemoteHost属性(ActiveX控件),RemotePort属性(ActiveX控件)。BytesReceived属性返回接受数据的数量(当前接受缓冲区中的数据)。使用GetData方法检取数据。在设计时不可用,在运行时是只读的。应用于Winsock控件。语法object.BytesReceivedobject是Winsock控件的对象表达式。返回值Long请参阅DataArrival事件。Close事件当远程计算机关闭连接T注:只有TCP是“连接”的,UDP是无“连接”的,或者反过来说,本手册说“连接”时都是指的TCP时产生该事件。应用程序应使用Close方法正确地关闭一个TCP连接。应用于Winsock控件。语法object_Close()object是Winsock控件的对象表达式。参数没有请参阅Close方法(Winsock控件)。8Close方法关闭客户或服务器应用程序的TCP连接或监听插槽。应用于Winsock控件。语法object.Closeobject是一个Winsock控件的对象表达式。参数没有返回值Void请参阅Close事件。Connect事件当一个Connect操作完成时发生。应用于Winsock控件。语法object.Connect()object置换元代表一个对象表达式,其值是一个Winsock控件。说明使用Connect事件确认已经成功建立了T注:该事件很重要,建议使用该事件而不是别的方法(如STATE的值)来判断一个连接是否已经成功Connect方法返回与远程计算机的连接T注:就是去连接!应用于Winsock控件。语法object.ConnectremoteHost,remotePortConnect方法的语法有如下几个部分:9部分描述object一个Winsock控件的对象表达式remoteHos要连接的远程计算机的名字remotePort要连接的远程计算机的端口号返回值没有说明当试图建立一个TCP连接时,你必须调用Connect方法。请参阅Accept方法,ConnectionRequest事件,RemoteHost属性(ActiveX控件),RemotePort属性(ActiveX控件)。ConnectionRequest事件当远程计算机请求一个连接时产生该事件。只对于TCP服务器应用程序适用。当有一个连入请求时就触发该事件。该事件触发之后,RemoteHostIP和RemotePort属性中保存了客户机的信息。应用于Winsock控件。语法object_ConnectionRequest(requestIDAsLong)ConnectionRequest事件的语法有如下几个部分:部分描述object一个Winsock控件的对象表达式10requested连入请求标识符。该参数应传递给第二个控件实例的Accept方法,说明服务器可以确定是否接受一个连入请求。如果没有接受连入请求,在客户将得到Close事件。适用Accept方法(在新的控件实例中)接受连入请求。请参阅Accept方法,Connect方法。DataArrival事件当新数据到达时产生该事件。应用于Winsock控件。语法object_DataArrival(bytesTotalAsLong)DataArrival事件的语法有如下几个部分:部分描述object一个Winsock控件的对象表达式bytesTotal长整数:可以检取数据的总数说明如果你不在一次GetData调用中检取所有的数据则不产生该事件。只有当新数据到来时才触发该事件。可以使用BytesReceived属性检查可检取数据的数量。请参阅BytesReceived属性,SendData方法,SendComplete事件,SendProgress事件。下面示例的例子在Winsock控件的DataArrival事件中11使用了GetData方法。当产生该事件时,代码调用GetData方法检取数据并将其保存在一个字符串中。然后将数据写入一个TextBox控件。PrivateSubWinsock1_DataArrival_(ByValbytesTotalAsLong)DimstrDataAsStringWinsock1.GetDatastrData,vbStringText1.Text=Text1.Text&strDataEndSubError事件后台进程发生错误时产生该事件(如连接失败,后台发送或检取数据失败等)。应用于Winsock控件。语法object_Error(numberAsInteger,DescriptionAsString,ScodeAsLong,SourceAsString,HelpFileasString,HelpContextAsLong,CancelDisplayAsBoolean).Error事件的语法有如下几个部分:部分描述object一个Winsock控件的对象表达式number一个整数,指定错误码请参阅“设置”中的常量description包含错误消息的字符串scode长SCODEsource描述错误源的字符串HelpFile包含帮助文件名的字符串12HelpContextHelp文件环境CancelDisplay指明是否取消该显示动作缺省是False,显示缺省的错误消息。如果你不想使用缺省的错误消息,可以将其设置为True设置number值的设置如下:常量值描述SckOutOfMemory7内存不足SckInvalidPropertyValue380属性值无效SckGetNotSup
本文标题:最新Winsock控件使用手册
链接地址:https://www.777doc.com/doc-2371802 .html