基于VB多線(xiàn)程技術(shù)的FTP的實(shí)現
1 引言
本文引用地址:http://dyxdggzs.com/article/89660.htmInternet的發(fā)展非常迅猛,面對Internet這個(gè)無(wú)窮寶庫,人們會(huì )經(jīng)常下載所需要的各種各樣的信息,這就要用到文件傳輸協(xié)議FTP(File Transfer Protocol)。FTP是因特網(wǎng)上較早出現的服務(wù)功能之一,迄今其仍是Internet上最常用也是最重要的服務(wù)功能。面對頻繁的文件下載和相對擁擠的網(wǎng)絡(luò )通路,如何快速、高效、方便地利用FTP獲取所需要的信息顯得越來(lái)越重要。為使系統具有更好的交互性,可以使用近年來(lái)出現的多線(xiàn)程機制提高系統的性能。
線(xiàn)程是比進(jìn)程更小的能完成一個(gè)任務(wù)的執行流。多線(xiàn)程是指在應用程序中有多個(gè)并發(fā)的線(xiàn)程在同時(shí)運行,這可以加快程序的響應時(shí)間,提高計算機資源的使用效率。多線(xiàn)程技術(shù)在圖形用戶(hù)界面和網(wǎng)絡(luò )程序設計中非常有用。VC++支持多線(xiàn)程技術(shù),但VC++程序目前尚不能嵌入流行的ASP網(wǎng)頁(yè)代碼中;Java的多線(xiàn)程技術(shù)頗佳,也可以很方便地將其Applet嵌入網(wǎng)絡(luò )的頁(yè)面中,但Java畢竟是一門(mén)類(lèi)似于C++的語(yǔ)言,對大多數人來(lái)說(shuō),熟練掌握并非易事,遠沒(méi)有VB使用起來(lái)簡(jiǎn)單、方便,而且VB的速度同樣也很快。VB 6.0在Internet網(wǎng)絡(luò )編程方面提供了強大功能,本文利用VB 6.0的Addressof操作符配合Windows API函數實(shí)現多線(xiàn)程技術(shù),并將其用于Internet上的FTP。
2 VB的FTP實(shí)現機制
VB的Internet Transfer控件實(shí)際上是一個(gè)Activex控件,他支持HTTP和FTP協(xié)議。前者用于瀏覽WWW的HTML頁(yè)面,后者用于連接FTP服務(wù)器進(jìn)行文件傳輸。新建一個(gè)工程,在窗體上放置Internet Transfer控件itl,另外放置2個(gè)文本框ta和tc,分別用來(lái)輸入FTP站點(diǎn)地址和列出該站點(diǎn)指定目錄下的可供下載的文件。
2.1 itl的主要屬性和方法
itl.AccessType是與Internet的連接方式??梢栽O置為1,2,0,分別表示通過(guò)電話(huà)線(xiàn)、局域網(wǎng)和缺省(按照注冊表中的設置)方式與Internet連接;itl.URL是FTP站點(diǎn)的地址;itl.RequestTimeout為連接的時(shí)間限制。
OpenURL方法用于同步連接指定的URL并返回該URL中的內容;Execute方法異步執行對遠程服務(wù)器的請求命令,此方法會(huì )觸發(fā)StateChanged事件;Cancel方法用于強行關(guān)閉當前的連接。
2.2 文件傳輸的實(shí)現
文件傳輸的實(shí)現程序如下所示:
程序運行如圖1所示。
3 VB的多線(xiàn)程實(shí)現機制
3.1 創(chuàng )建線(xiàn)程并初始化
VB通過(guò)調用Windows的API函數CreateThread實(shí)現多線(xiàn)程,該函數的聲明如下:
他返回線(xiàn)程的句柄。為了對線(xiàn)程初始化和管理,需要創(chuàng )建一個(gè)類(lèi)myclass,用myclass的下述函數初始化線(xiàn)程。
3.2 激活線(xiàn)程并管理
用以下2個(gè)API函數均可激活線(xiàn)程。
用類(lèi)myclass的一個(gè)屬性來(lái)管理線(xiàn)程的狀態(tài)。
3.3 編寫(xiě)處理新線(xiàn)程函數的代碼
在函數newFunc中,用forml.show執行前面的實(shí)現FTP的程序代碼。運行時(shí)每當創(chuàng )建一個(gè)新線(xiàn)程成功,會(huì )彈出一個(gè)信息窗口,表明當前的線(xiàn)程號,如圖2所示。
4 結 語(yǔ)
網(wǎng)絡(luò )技術(shù)的發(fā)展日新月異,在“時(shí)間就是金錢(qián)、效率就是生命”的信息時(shí)代,如何通過(guò)Internet快速、高效、安全、方便地獲取所需要的信息已成為一個(gè)非常重要的技術(shù)手段。多線(xiàn)程技術(shù)可以使程序反應更快、交互性更強。用VB實(shí)現多線(xiàn)程比用VC++和Java均簡(jiǎn)單得多,而且運行速度毫不遜色,只是目標代碼稍大一點(diǎn)(約5%)。文中用Addressof操作符配合Windows API函數實(shí)現多線(xiàn)程,并成功運用于FTP遠程文件傳輸。實(shí)驗表明,該方法安全可靠,簡(jiǎn)單易行,速度快、開(kāi)銷(xiāo)低,每一個(gè)線(xiàn)程大約僅占CPU 20 ms的時(shí)間片。隨著(zhù)互連網(wǎng)的普及和網(wǎng)上信息的爆炸式增加,基于VB多線(xiàn)程技術(shù)的FTP必然會(huì )得到更廣泛地應用。
評論