<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 網(wǎng)絡(luò)與存儲 > 設(shè)計(jì)應(yīng)用 > 基于VB多線程技術(shù)的FTP的實(shí)現(xiàn)

          基于VB多線程技術(shù)的FTP的實(shí)現(xiàn)

          作者:苗專生 時(shí)間:2008-11-20 來源:現(xiàn)代電子技術(shù) 收藏

          1 引言

          本文引用地址:http://www.ex-cimer.com/article/89660.htm

            Internet的發(fā)展非常迅猛,面對Internet這個(gè)無窮寶庫,人們會經(jīng)常下載所需要的各種各樣的信息,這就要用到文件傳輸協(xié)議(File Transfer Protocol)。是因特網(wǎng)上較早出現(xiàn)的服務(wù)功能之一,迄今其仍是Internet上最常用也是最重要的服務(wù)功能。面對頻繁的文件下載和相對擁擠的網(wǎng)絡(luò)通路,如何快速、高效、方便地利用獲取所需要的信息顯得越來越重要。為使系統(tǒng)具有更好的交互性,可以使用近年來出現(xiàn)的多線程機(jī)制提高系統(tǒng)的性能。

            線程是比進(jìn)程更小的能完成一個(gè)任務(wù)的執(zhí)行流。多線程是指在應(yīng)用程序中有多個(gè)并發(fā)的線程在同時(shí)運(yùn)行,這可以加快程序的響應(yīng)時(shí)間,提高計(jì)算機(jī)資源的使用效率。多線程技術(shù)在圖形用戶界面和網(wǎng)絡(luò)程序設(shè)計(jì)中非常有用。VC++支持多線程技術(shù),但VC++程序目前尚不能嵌入流行的ASP網(wǎng)頁代碼中;Java的多線程技術(shù)頗佳,也可以很方便地將其Applet嵌入網(wǎng)絡(luò)的頁面中,但Java畢竟是一門類似于C++的語言,對大多數(shù)人來說,熟練掌握并非易事,遠(yuǎn)沒有VB使用起來簡單、方便,而且VB的速度同樣也很快。VB 6.0在Internet網(wǎng)絡(luò)編程方面提供了強(qiáng)大功能,本文利用VB 6.0的Addressof操作符配合Windows API函數(shù)實(shí)現(xiàn)多線程技術(shù),并將其用于Internet上的FTP。

          2 VB的FTP實(shí)現(xiàn)機(jī)制

            VB的Internet Transfer控件實(shí)際上是一個(gè)Activex控件,他支持HTTP和FTP協(xié)議。前者用于瀏覽WWW的HTML頁面,后者用于連接FTP服務(wù)器進(jìn)行文件傳輸。新建一個(gè)工程,在窗體上放置Internet Transfer控件itl,另外放置2個(gè)文本框ta和tc,分別用來輸入FTP站點(diǎn)地址和列出該站點(diǎn)指定目錄下的可供下載的文件。

          2.1 itl的主要屬性和方法

            itl.AccessType是與Internet的連接方式。可以設(shè)置為1,2,0,分別表示通過電話線、局域網(wǎng)和缺省(按照注冊表中的設(shè)置)方式與Internet連接;itl.URL是FTP站點(diǎn)的地址;itl.RequestTimeout為連接的時(shí)間限制。

            OpenURL方法用于同步連接指定的URL并返回該URL中的內(nèi)容;Execute方法異步執(zhí)行對遠(yuǎn)程服務(wù)器的請求命令,此方法會觸發(fā)StateChanged事件;Cancel方法用于強(qiáng)行關(guān)閉當(dāng)前的連接。

          2.2 文件傳輸?shù)膶?shí)現(xiàn)

            文件傳輸?shù)膶?shí)現(xiàn)程序如下所示:

           

            程序運(yùn)行如圖1所示。

          3 VB的多線程實(shí)現(xiàn)機(jī)制

          3.1 創(chuàng)建線程并初始化

            VB通過調(diào)用Windows的API函數(shù)CreateThread實(shí)現(xiàn)多線程,該函數(shù)的聲明如下:

           

            他返回線程的句柄。為了對線程初始化和管理,需要?jiǎng)?chuàng)建一個(gè)類myclass,用myclass的下述函數(shù)初始化線程。

           
           

          3.2 激活線程并管理

            用以下2個(gè)API函數(shù)均可激活線程。

           

            用類myclass的一個(gè)屬性來管理線程的狀態(tài)。

           

          3.3 編寫處理新線程函數(shù)的代碼

            在函數(shù)newFunc中,用forml.show執(zhí)行前面的實(shí)現(xiàn)FTP的程序代碼。運(yùn)行時(shí)每當(dāng)創(chuàng)建一個(gè)新線程成功,會彈出一個(gè)信息窗口,表明當(dāng)前的線程號,如圖2所示。

           

          4 結(jié) 語

            網(wǎng)絡(luò)技術(shù)的發(fā)展日新月異,在“時(shí)間就是金錢、效率就是生命”的信息時(shí)代,如何通過Internet快速、高效、安全、方便地獲取所需要的信息已成為一個(gè)非常重要的技術(shù)手段。多線程技術(shù)可以使程序反應(yīng)更快、交互性更強(qiáng)。用VB實(shí)現(xiàn)多線程比用VC++和Java均簡單得多,而且運(yùn)行速度毫不遜色,只是目標(biāo)代碼稍大一點(diǎn)(約5%)。文中用Addressof操作符配合Windows API函數(shù)實(shí)現(xiàn)多線程,并成功運(yùn)用于FTP遠(yuǎn)程文件傳輸。實(shí)驗(yàn)表明,該方法安全可靠,簡單易行,速度快、開銷低,每一個(gè)線程大約僅占CPU 20 ms的時(shí)間片。隨著互連網(wǎng)的普及和網(wǎng)上信息的爆炸式增加,基于VB多線程技術(shù)的FTP必然會得到更廣泛地應(yīng)用。

           



          關(guān)鍵詞: FTP

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();