1 引言
Internet的发展非常迅猛,面对Internet这个无穷宝库,人们会经常下载所需要的各种各样的信息,这就要用到文件传输协议FTP(File Transfer Protocol)。FTP是因特网上较早出现的服务功能之一,迄今其仍是Internet上最常用也是最重要的服务功能。面对频繁的文件下载和相对拥挤的网络通路,如何快速、高效、方便地利用FTP获取所需要的信息显得越来越重要。为使系统具有更好的交互性,可以使用近年来出现的多线程机制提高系统的性能。
线程是比进程更小的能完成一个任务的执行流。多线程是指在应用程序中有多个并发的线程在同时运行,这可以加快程序的响应时间,提高计算机资源的使用效率。多线程技术在图形用户界面和网络程序设计中非常有用。VC++支持多线程技术,但VC++程序目前尚不能嵌入流行的ASP网页代码中;Java的多线程技术颇佳,也可以很方便地将其Applet嵌入网络的页面中,但Java毕竟是一门类似于C++的语言,对大多数人来说,熟练掌握并非易事,远没有VB使用起来简单、方便,而且VB的速度同样也很快。VB 6.0在Internet网络编程方面提供了强大功能,本文利用VB 6.0的Addressof操作符配合Windows API函数实现多线程技术,并将其用于Internet上的FTP。
2 VB的FTP实现机制
VB的Internet Transfer控件实际上是一个Activex控件,他支持HTTP和FTP协议。前者用于浏览WWW的HTML页面,后者用于连接FTP服务器进行文件传输。新建一个工程,在窗体上放置Internet Transfer控件itl,另外放置2个文本框ta和tc,分别用来输入FTP站点地址和列出该站点指定目录下的可供下载的文件。
2.1 itl的主要属性和方法
itl.AccessType是与Internet的连接方式。可以设置为1,2,0,分别表示通过电话线、局域网和缺省(按照注册表中的设置)方式与Internet连接;itl.URL是FTP站点的地址;itl.RequestTimeout为连接的时间限制。
OpenURL方法用于同步连接指定的URL并返回该URL中的内容;Execute方法异步执行对远程服务器的请求命令,此方法会触发StateChanged事件;Cancel方法用于强行关闭当前的连接。
2.2 文件传输的实现
文件传输的实现程序如下所示:
程序运行如图1所示。
3 VB的多线程实现机制
3.1 创建线程并初始化
VB通过调用Windows的API函数CreateThread实现多线程,该函数的声明如下:
他返回线程的句柄。为了对线程初始化和管理,需要创建一个类myclass,用myclass的下述函数初始化线程。
3.2 激活线程并管理
用以下2个API函数均可激活线程。
用类myclass的一个属性来管理线程的状态。
3.3 编写处理新线程函数的代码
在函数newFunc中,用forml.show执行前面的实现FTP的程序代码。运行时每当创建一个新线程成功,会弹出一个信息窗口,表明当前的线程号,如图2所示。
4 结 语
网络技术的发展日新月异,在“时间就是金钱、效率就是生命”的信息时代,如何通过Internet快速、高效、安全、方便地获取所需要的信息已成为一个非常重要的技术手段。多线程技术可以使程序反应更快、交互性更强。用VB实现多线程比用VC++和Java均简单得多,而且运行速度毫不逊色,只是目标代码稍大一点(约5%)。文中用Addressof操作符配合Windows API函数实现多线程,并成功运用于FTP远程文件传输。实验表明,该方法安全可靠,简单易行,速度快、开销低,每一个线程大约仅占CPU 20 ms的时间片。随着互连网的普及和网上信息的爆炸式增加,基于VB多线程技术的FTP必然会得到更广泛地应用。
|