999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于VB多線程技術的FTP的實現

2008-04-12 00:00:00苗專生
現代電子技術 2008年8期

摘 要:由于網絡用戶的數量與日俱增,通信阻塞現象時有發生。如何提高FTP的傳輸速度是一個重要的研究課題。多線程技術在提高系統效率、有效利用系統資源和保證用戶任務之間的通信質量等方面有其明顯的優點?;赩B的多線程技術支持,探討用VB的多線程技術在Internet上進行FTP的實現方法。實驗結果表明,該方法安全可靠、簡單易行。

關鍵詞:VB;多線程技術;Internet;FTP

中圖分類號:TP393文獻標識碼:B

文章編號:1004-373X(2008)08-059-02

Realization of FTP Based on VB Multithreading Technology

MIAO Zhuansheng

(Luoyang Institute of Science and Technology,Luoyang,471023,China)

Abstract:As the number of network users are increased with each passing day,the phenomenon that communications are choked always occurrence.How accelerate speed of FTP transmission is an important question for discussion.The multithreading technique is excellent in increasing system efficiency,making use of the system resources effectively and guaranteeing the communication quantity of the users′ tasks.Based on VB multithreading technique,the way of using VB multithreading technique to realize FTP on the Internet is discussed in this paper.The experiment results show the method is safe reliable andeasy to realize.

Keywords:VB;multithreading technique;Internet;FTP

1 引 言

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

線程是比進程更小的能完成一個任務的執行流。多線程是指在應用程序中有多個并發的線程在同時運行,這可以加快程序的響應時間,提高計算機資源的使用效率。多線程技術在圖形用戶界面和網絡程序設計中非常有用[3]。 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控件[4],他支持HTTP和FTP協議。前者用于瀏覽WWW的HTML頁面,后者用于連接FTP服務器進行文件傳輸。新建一個工程,在窗體上放置Internet Transfer控件it1,另外放置2個文本框ta和tc,分別用來輸入FTP站點地址和列出該站點指定目錄下的可供下載的文件。

2.1 it1的主要屬性和方法

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

OpenURL方法用于同步連接指定的URL并返回該URL中的內容;Execute方法異步執行對遠程服務器的請求命令,此方法會觸發StateChanged事件;Cancel方法用于強行關閉當前的連接。

2.2 文件傳輸的實現

文件傳輸的實現程序如下所示:

Private Sub ta[CD#*2]KeyPress(KeyAscii As Integer)[JY]′打開URL并顯示可下載的文件

If KeyAscii = Asc(13) Then[JY]′以回車為URL輸入完畢標志

KeyAscii = 0: ta.SelStart = 0: ta.SelLength = Len(ta)

On Error GoTo handleerror

it1.URL = ta.Text′按照輸入的地址設置Internet 

Transfer控件的URL屬性

it1.Execute ,″dir *.*″[JY]′執行Execute方法,列出

URL當前目錄的所有文件

Caption = it1.URL[JY]′在窗口的標題欄上也顯示URL

End If

Exit Sub

handleerror:

…[JY]′錯誤判斷處理

End Sub

Private Sub tc[CD#*2]DblClick( )[JY]′雙擊文件名開始下載

Dim sd As String

If tc.SelLength Then

If Right(tc.SelText,1) = ″/″ Then

[ZK(]ta.Text = ta.Text ″/″ Left(tc.SelText,tc.SelLength - 1)

On Error GoTohandleerror

sd = Right(ta.Text,Len(ta.Text) - Len(I1.URL))

it1.Execute ,″dir″ sd ″/*″

Else

[ZK(]sd = Right(ta.Text,Len(ta.Text) - Len(it1.URL)) ″/″ tc.SelText

sd = Right(sd,Len(sd) - 1)

it1.Execute ,″get″ sd ″ ″ st tc.SelText[JY]′用FTP的get命令下載遠程文件

End If

End If

handleerror:

…

End Sub

程序運行如圖1所示。

3 VB的多線程實現機制

3.1 創建線程并初始化

VB通過調用Windows的API函數CreateThread實現多線程[4],該函數的聲明如下:

Declare Function CreateThread Lib ″kernel32″ Alias ″CreateThread″(lpThreadAttributes As SECURITY[CD#*2]ATTRIBUTES,ByVal dwStackSize As Long,lpStartAddress As Long,lpParameter As Any,ByVal dwCreationFlags As Long,lpThreadId As Long) As Long

他返回線程的句柄。為了對線程初始化和管理,需要創建一個類myclass,用myclass的下述函數初始化線程。

Dim lt as long

Public sub initialize(lpfnbasfunc as long)[JY]′形參是線程函數的地址

Dim ds As Long: Dim dc As Long:Dim lp As Long:Dim mn As Long

mn=0:ds=0

dc=4[JY]′暫不激活

me.Thread=createThread(mn,ds,lpfnbasfunc,mn,dc,lt)

if me.Thread=mn then msgbox ″創建線程失敗!″ else msgbox ″線程″ lt ″正在運行……″,2

lt=lt+1;

End Sub

圖1 指定URL的可下載文件

3.2 激活線程并管理

用以下2個API函數均可激活線程。

Declare Function ResumeThread Lib ″kernel32″ Alias ″ResumeThread″ (ByVal hThread As Long) As Long

Declare Function SuspendThread Lib ″kernel32″ Alias ″SuspendThread″ (ByVal hThread As Long) As Long

用類myclass的一個屬性來管理線程的狀態。

Public threadstatus as Boolean

Public property let enabled(byval nValue as Boolean)

If nValue=true and me.threadstatus=1 then

Resumethread(me.thread)

Me.threadstatus=true

Elseif me.threadstatus=true then

Suspendthread(me.thread)

Me.threadstatus=1

End if

End property

Dim myThread as new myclass[JY]′創建類的新線程對象

myThread.Initialize AddressOf newFunc[JY]′產生處理新線程的函數

myThread.Enabled=true[JY]′激活線程

3.3 編寫處理新線程函數的代碼

在函數newFunc中,用form1.show執行前面的實現FTP的程序代碼。運行時每當創建一個新線程成功,會彈出一個信息窗口,表明當前的線程號,如圖2所示。

圖2 正在運行的新線程

4 結 語

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

參 考 文 獻

[1]田超.Internet的入網與應用[M].北京:科學技術出版社,1998.

[2]劉倩,裘鴻林.Java線程機制在FTP客戶端程序中的應用[J].中國數據通信,2004,11(2):5760.

[3]張白一,崔尚森.面向對象程序設計[CD2]Java[M].西安:西安電子科技大學出版社,2003.

[4]曾偉民,鄧勇剛.Visual Basic 6.0高級實用教程[M].北京:電子工業出版社,1999.

作者簡介 苗專生 男,1957年出生,河南伊川人,高級工程師,碩士。主要從事網絡通信和電子技術的研究工作。

注:本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文

主站蜘蛛池模板: 久草视频一区| 国产男女免费完整版视频| 综合久久久久久久综合网| 99视频精品全国免费品| 高清无码不卡视频| 日韩av高清无码一区二区三区| 国产在线八区| 成人在线天堂| 亚洲αv毛片| 无码中字出轨中文人妻中文中| 一级福利视频| 美女啪啪无遮挡| 国产精品尹人在线观看| 国产青青操| 国产乱人伦AV在线A| 最新国产午夜精品视频成人| 色欲色欲久久综合网| 欧美精品黑人粗大| 无码免费试看| 九色视频线上播放| 国产又粗又爽视频| 91免费国产高清观看| 91精品伊人久久大香线蕉| 亚洲妓女综合网995久久| 欧美精品另类| 国产在线第二页| 农村乱人伦一区二区| 日韩精品欧美国产在线| 青青草一区| 伊人查蕉在线观看国产精品| 免费国产福利| 九色国产在线| 自拍偷拍欧美| 欧美激情第一区| 欧美亚洲国产视频| 伊人久久精品无码麻豆精品 | www.91中文字幕| 丰满少妇αⅴ无码区| 最新痴汉在线无码AV| 久久久黄色片| 中文字幕在线视频免费| 在线播放国产99re| 激情五月婷婷综合网| 日韩欧美中文| 永久免费AⅤ无码网站在线观看| 国产成人精品高清在线| 黄片一区二区三区| 91探花国产综合在线精品| www中文字幕在线观看| 国产欧美精品一区aⅴ影院| 国产SUV精品一区二区6| 亚洲中文精品久久久久久不卡| 精品亚洲国产成人AV| 国产99欧美精品久久精品久久| 91免费国产在线观看尤物| 亚洲无限乱码| 久久精品66| 91在线视频福利| 成年人国产视频| 免费毛片视频| 9966国产精品视频| 亚洲—日韩aV在线| 亚洲精品成人7777在线观看| 不卡视频国产| 三上悠亚一区二区| AV在线天堂进入| 漂亮人妻被中出中文字幕久久| 国产精品视频导航| 欧美五月婷婷| 欧美日韩一区二区在线播放| 男人天堂亚洲天堂| 亚洲免费三区| 午夜毛片免费观看视频 | 激情亚洲天堂| 国产成人无码AV在线播放动漫| 久久久精品无码一二三区| 亚洲香蕉久久| 亚洲色偷偷偷鲁综合| 亚洲精品亚洲人成在线| 茄子视频毛片免费观看| 久久精品嫩草研究院| 久久国产亚洲偷自|