vfp 中揭开winsock的神秘面纱

vfp 中揭开winsock的神秘面纱

ID:33192455

大小:60.30 KB

页数:13页

时间:2019-02-21

vfp 中揭开winsock的神秘面纱_第1页
vfp 中揭开winsock的神秘面纱_第2页
vfp 中揭开winsock的神秘面纱_第3页
vfp 中揭开winsock的神秘面纱_第4页
vfp 中揭开winsock的神秘面纱_第5页
资源描述:

《vfp 中揭开winsock的神秘面纱》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、VFP中揭开Winsock的神秘面纱在今天TCP/IP处理所有Internet上的通信流.在局域网上也可以运行TCP/IP.我们可以利用这一点,并在诸如FTP,IRC,e-mail,WWW或其它任何Internet标准类型的通信.要达到这样的目的,需要使用包含在Windows中的一个DLL,也就是所谓的WSOCK32.DLL或相似的名字.在使用DLL中的唯一问题,直接的,是我们将不得不控制和处理每一个函数的反应而且这将会造成额外的和不必要的开销.Windows已经有一个ActiveX叫做WINSOCK.OCX.它使用与我们所需要的相同的DLL,并

2、已经用方法和事件控制和处理了整个反应,使它易于使用.初识ActiveXWinsock控件方法说明Accept(requestID)该方法用于接收一个特写的连接.它作为一个参数传递来处理请求.Bind(LocalPort,LocalIP)为CDP连接指定端口和本地IP.Close()关闭服务器和客户之间的活动的连接.GetData(Data,Type,maxLen)用缓冲中的内容填充变量,使其为空.Listen()对象等等连接.PeekData(Data,Type,maxLen)用缓冲中的内容填充变量,但不清空缓冲.SendData(Data)发送

3、数据到远程计算机.事件说明Close当远程计算机关闭当前连接时发生Connect(Error)与服务器的连接成功后.ConnectionRequest(requestID)当远程计算机发出一个请示时.DataArrival(BytesTotal)在从远程计算机上接收到新数据时发生.Error(number,Description,Scode,Source,HelpFile,HelpContext,CancelDisplay)当发生后台处理错误时.SendComplete数据发送完毕时发生SendProgress(bytesSent,bytesRe

4、maining)在发送数据时.属性说明BytesReceived返回到缓冲中的字节数LocaHostName返回本地机器的名字LocalIP本地计算机的IP地址LocalPort数据传送的端口(客户)或代表一个连接(服务器)Name对象名Object运行时自动创建,仅在VFP中.Protocol使用的协议TCP(0)或UDP(1)属性说明RemoteHost返回远程计算机的端口RemoteHostIP返回远程计算机IPRemotePort返回远程计算机上的连接端口SocketHandle返回控件当前连接的句柄State返回控件的状态:0=已关闭1

5、=打开2=等待连接3=正在连接4=决定主机5=主机已决定6=正在连接7=已连接8=连接被远程计算机关闭9=错误在VFP中使用它在VFP中使用ActiveXWinsock时你必须牢牢记住:在运行任何ActiveX方法前,必须添加.F.到应用程序的AutoYeld属性(application.autoyield=.f.);所有与Windsock相关的方法,事件或属性必须加上object前缀(thisFORM.wsock1.OBJECT.connect)VFP不能处理字符串中的CHR(0)字符.因此,如果你要处理带有这些内容的数据就需要一字节一字节地读

6、缓冲中接收到的数据.例如,就象连接到Unix服务器一样.让我们看看示例1来开始测试我们的过程:它由两个表单组成:1个客户表单和一个服务器表单.它的功能是从客户传送一个文本信息到服务器.另外服务器以小写方式返回相同的信息.请注意在两个表单的INIT方法中的命令pplication.AutoYield=.f..这意味着我们告诉VFP不处理方法中的每一个代码行,让ActiveX自己控制它的事件.在表单的CLOSE方法中我们包括了Application.AutoYield=.t.来允许VFP按一般方法控制事件.在SERVER表单的INIT方法中有两个重要

7、的命令:thisFORM.sock1.object.LocalPort=3001使用以上命令,ActiveXWinsock在端口3001上接收连接.thisFORM.sock1.object.Listen()该命令告诉Winsockto等待连接.从此时开始,上面的命令中定义的端口将打开并等待一个连接.当检测到连接时,将触发ConnectionRequest事件,发送这个新连接的句柄作为一个参数.查看示例中的该方法的详细情况:This.object.close()确信没有其它未决的连接并停止等待.This.object.Accept(request

8、id)运行Accept方法,发送连接句柄作为参数.仅现在连接是设置了的.现在,让我们到CLIENTE表单,在发送按钮的CLICK方法上:

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。