版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、Good is good, but better carries it.精益求精,善益求善。FTP客戶端的設(shè)計(jì)與實(shí)現(xiàn)-FTP客戶端的設(shè)計(jì)與實(shí)現(xiàn)摘要:FTP(FileTransferProtocol)即文件傳輸協(xié)議是TCP/IP協(xié)議族中的一個(gè)應(yīng)用層協(xié)議。FTP客戶端利用TCP的可靠傳輸服務(wù),減少了不同文件系統(tǒng)間的不兼容性,實(shí)現(xiàn)了文件的傳送功能;而且它提供了直觀的文件傳輸操作方式,用戶只需要使用鼠標(biāo)拖動(dòng)選擇就可以完成相關(guān)操作。文章主要介紹了FTP的相關(guān)知識(shí)、VisualBasic各種控件以及WindowsAPI函數(shù)的調(diào)用等內(nèi)容。在此基礎(chǔ)上文章最后介紹了如何使用VB完成FTP客戶端應(yīng)用程序的開發(fā)。關(guān)
2、鍵詞:VB;FTP;WindowsAPI0引言FTP(FileTransferProtocol)協(xié)議即文件傳輸協(xié)議是TCP/IP體系結(jié)構(gòu)中的一個(gè)重要協(xié)議,專門用于局域網(wǎng)或Internet中服務(wù)器和客戶端之間進(jìn)行文件傳輸。FTP協(xié)議利用TCP的可靠傳輸服務(wù),減少了不同文件系統(tǒng)間的不兼容,實(shí)現(xiàn)了文件的傳送功能。FTP極大的豐富了我們的網(wǎng)絡(luò)生活,成為互聯(lián)網(wǎng)上不可缺少的服務(wù)方式之一1。1設(shè)計(jì)內(nèi)容FTP使用客戶/服務(wù)器方式,本課題就是設(shè)計(jì)一個(gè)FTP客戶端程序,其具有以下基本功能:能完成FTP鏈接的打開和關(guān)閉;能實(shí)現(xiàn)本地和遠(yuǎn)程目錄的瀏覽;能執(zhí)行文件的上傳和下載等有關(guān)操作。2開發(fā)工具簡(jiǎn)介2.1VisualB
3、asic簡(jiǎn)介Basic發(fā)展到今天已經(jīng)有很多版本,如GW-Basic、QBasic、VisualBasic等等。其中VisualBasic是最容易學(xué)習(xí)與應(yīng)用的程序語(yǔ)言之一,而且其功能也非常強(qiáng)大。VisualBasic6.0自帶的一些功能控件可以幫助我們實(shí)現(xiàn)網(wǎng)絡(luò)通信的功能,是我們網(wǎng)絡(luò)編程中的一個(gè)重要的編程工具。2.2WindowsAPI函數(shù)介紹Win32API也就是MicrosoftWindows32位平臺(tái)的應(yīng)用程序編程接口。WindowsAPI可以提供形形色色的服務(wù),凡是在Windows操作系統(tǒng)環(huán)境下開發(fā)的應(yīng)用程序,都可以調(diào)用WindowsAPI。2.3InternetTransfer控件介紹I
4、nternetTransfer控件是微軟為方便使用者設(shè)計(jì)Internet應(yīng)用程序所提供的一種控件。它提供兩種Internetprotocol:HTTP及FTP。我們?cè)谑褂脮r(shí),必須先設(shè)置好它的存取方式。存取方式分為直接連接或通過proxy來(lái)連接Internet網(wǎng)絡(luò)兩種。當(dāng)我們?cè)O(shè)置好相關(guān)參數(shù)之后,InternetTransfer控件提供兩個(gè)method(OpenURL及Execute)讓我們執(zhí)行網(wǎng)絡(luò)相關(guān)操作,我們可以用這兩個(gè)命令來(lái)執(zhí)行一些Internetcommand。2.4WindowsSocket控件Socket由UNIX操作系統(tǒng)逐步移植到Windows,WindowsSocket規(guī)范于90年
5、代初,依次有1.0、1.1、2.0和3.0。WindowsSocket規(guī)范定義并記錄了如何使用API;Socket是網(wǎng)絡(luò)通信的基本操作單元,目前Windows支持兩種套接口:流套接口和數(shù)據(jù)報(bào)套接口。TCP/IP中的TCP協(xié)議使用的是流套接口,提供了面向連接的、無(wú)差錯(cuò)的、發(fā)送先后順序一致、包長(zhǎng)度不限和非重復(fù)的網(wǎng)絡(luò)信息包的傳輸。TCP/IP中的UDP則使用數(shù)據(jù)報(bào)套接口,該接口提供雙向的、有序的、無(wú)重復(fù)并有記錄邊界的數(shù)據(jù)報(bào)服務(wù)。2.5FTP基礎(chǔ)理論知識(shí)FTP是TCP/IP的一種具體應(yīng)用,它工作在OSI模型的第七層,TCP模型的第四層,即應(yīng)用層,同時(shí)在傳輸層使用TCP,所以FTP客戶在和服務(wù)器建立連接
6、前就要經(jīng)過一個(gè)被稱作三次握手的過程。其連接是可靠的,傳輸是面向連接的,所以能為數(shù)據(jù)傳輸提供可靠的保證。使用FTP時(shí)必須首先登錄,在遠(yuǎn)程主機(jī)上獲得相應(yīng)的權(quán)限以后,方可上傳或下載文件。但其違背了Internet的開放性,為此系統(tǒng)管理員建立了一個(gè)特殊的用戶ID,名為anonymous,Internet上的任何人在任何地方都可使用該用戶ID。習(xí)慣上,人們用自己的E-mail地址作為口令。2.6FTP工作原理FTP協(xié)議中,控制連接均由客戶端發(fā)起,而數(shù)據(jù)連接有兩種工作方式:PORT方式和PASV方式。下面以PORT方式為例,如圖1所示:FTP服務(wù)器運(yùn)行FTP守護(hù)進(jìn)程,等待用戶的FTP請(qǐng)求。用戶運(yùn)行FTP命
7、令,請(qǐng)求FTP服務(wù)器為其服務(wù)FTP守護(hù)進(jìn)程收到用戶的FTP請(qǐng)求后,派生出FTP子進(jìn)程與用戶進(jìn)程交互,建立文件傳輸控制連接,使用TCP端口21。用戶輸入FTP子命令,服務(wù)器接收子命令,如命令正確,雙方各派生一個(gè)數(shù)據(jù)傳輸進(jìn)程FTP-DATA,建立數(shù)據(jù)連接,使用TCP端口20進(jìn)行數(shù)據(jù)傳輸。本次子命令請(qǐng)求的數(shù)據(jù)傳輸完畢,拆除數(shù)據(jù)連接,結(jié)束FTP-DATA進(jìn)程。用戶繼續(xù)輸入FTP子命令,重復(fù)、的過程,直至用戶輸入quit命令,雙方拆除控制連接,結(jié)束文件傳輸,結(jié)束FTP子進(jìn)程。圖1FTP工作原理示意圖3詳細(xì)設(shè)計(jì)3.1程序數(shù)據(jù)流程圖FTP的客戶端程序設(shè)計(jì)的主要內(nèi)容如圖2所示:客戶登錄模塊、FTP服務(wù)器目錄瀏
8、覽模塊、上傳和下載模塊。設(shè)計(jì)流程:客戶端程序先連接服務(wù)器,然后瀏覽FTP服務(wù)器目錄,選擇文件下載或上傳,進(jìn)行文件數(shù)據(jù)傳輸,最后斷開連接2,3。3.2系統(tǒng)界面設(shè)計(jì)系統(tǒng)界面主要包括以下幾個(gè)方面的內(nèi)容:登錄部分、遠(yuǎn)程目錄瀏覽部分、本地目錄文件瀏覽部分等。系統(tǒng)界面是在新建窗體的基礎(chǔ)上將其Caption改為“FTP客戶端”,增加相應(yīng)的文本框、命令按鈕等一些控件實(shí)現(xiàn),具體如圖3所示圖2程序數(shù)據(jù)流程圖圖3系統(tǒng)界面3.3模塊設(shè)計(jì)3.3.1登錄模塊為使客戶端能登錄服務(wù)器,須設(shè)置以下屬性:FTP服務(wù)器地址:txtserver用戶名:txtuser密碼:txtpassword端口號(hào):txtport(一般為21)tx
9、tuser及txtpassword代表登錄此FTP服務(wù)器所需要的用戶名及密碼,若兩者皆為空字符串,則代表是以anonymous(匿名)身份登入;若輸入用戶名與密碼,Connect會(huì)以此做為其用戶名及密碼與FTP服務(wù)器建立連接;隨后是對(duì)“連接”按鈕的設(shè)置,實(shí)現(xiàn)與服務(wù)器端的連接4。以下為“連接”命令按鈕的代碼:PrivateSubcmdConnect_Click()IfNotbActiveSessionAndhOpen0ThenIftxtServer.Text=ThenMsgBoxPleaseenteraservername!ExitSubEndIfDimnFlagAsLongIfchkPassi
10、ve.ValueThennFlag=INTERNET_FLAG_PASSIVEElsenFlag=0EndIfIfhConnection=0ThenbActiveSession=FalseErrorOutErr.LastDllError,InternetConnectElsebActiveSession=TrueEnableUI(CBool(hOpen)FillTreeViewControl(txtServer.Text)FtpEnumDirectory()IfEnumItemNameBag.Count=0ThenExitSubFillTreeViewControl(txtServer.Tex
11、t)EndIfEndIfEndSub3.3.2瀏覽模塊遠(yuǎn)程端瀏覽模塊本模塊是通過對(duì)treeview控件的設(shè)置以及相關(guān)代碼的編寫來(lái)實(shí)現(xiàn)對(duì)FTP服務(wù)器默認(rèn)目錄與文件的讀取。當(dāng)建立連接成功之后,通過函數(shù)調(diào)用取得FTP服務(wù)器端默認(rèn)最大的目錄(FTP服務(wù)器針對(duì)不同用戶開放不同的目錄名稱)。當(dāng)然FTP服務(wù)器端也必須開放目錄讀取權(quán)限,允許客戶端連接登錄及瀏覽目錄,否則Connect的執(zhí)行將失效5,6,7。本地瀏覽模塊本地瀏覽模塊通過DriveComboBox、DirectoryListBox和FileListBox三個(gè)控件設(shè)計(jì)實(shí)現(xiàn)。DriveComboBox用于設(shè)置驅(qū)動(dòng)器,DirectoryListBox用
12、于顯示當(dāng)前驅(qū)動(dòng)器所有文件與目錄,F(xiàn)ileListBox用于顯示所選中的文件夾中的所有文件。3.3.3文件上傳下載模塊文件傳輸是一個(gè)雙向的過程,既可以把服務(wù)器上的文件下載到指定的文件下,也可以把本地某文件上傳到服務(wù)器。文件下載模塊文件下載是通過點(diǎn)擊“下載”按鈕來(lái)完成對(duì)選定的遠(yuǎn)程目錄下文件的下載。此功能實(shí)現(xiàn)主要是通過程序獲取本地和遠(yuǎn)程的當(dāng)前路徑,區(qū)分被選中的內(nèi)容類型為文件還是目錄,若為文件時(shí)執(zhí)行下載過程,否則退出。以下為“下載”命令按鈕的代碼8:PrivateSubcmdGet_Click()DimbRetAsBooleanDimszFileRemoteAsString,szDirRemoteAs
13、String,szFileLocalAsStringDimszTempStringAsStringDimnPosAsLong,nTempAsLongDimnodXAsNodeSetnodX=TreeView1.SelectedItemIfbActiveSessionThenIfnodXIsNothingThenMsgBoxPleaseselecttheitemtoGET!ExitSubEndIfszTempString=TreeView1.SelectedItem.TextszFileRemote=szTempStringnPos=0nTemp=0DonTemp=InStr(1,szTempS
14、tring,/,vbBinaryCompare)IfnTemp=0ThenExitDoszTempString=Right(szTempString,Len(szTempString)-nTemp)nPos=nTemp+nPosLoopszDirRemote=Left(szFileRemote,nPos)szFileRemote=Right(szFileRemote,Len(szFileRemote)-nPos)szFileLocal=File1.PathrcdszDirRemotebRet=FtpGetFile(hConnection,szFileRemote,szFileLocal&/&s
15、zFileRemote,False,INTERNET_FLAG_RELOAD,dwType,0)File1.RefreshIfbRet=FalseThenErrorOutErr.LastDllError,FtpGetFileElseMsgBoxNotinsessionEndIfEndSub文件上傳模塊文件上傳是通過點(diǎn)擊“上傳”按鈕來(lái)完成對(duì)選定的本地文件的上傳。上傳文件基本與下載文件類似,但FTP服務(wù)器端必須開放目錄寫入的權(quán)限,并允許修改FTP服務(wù)器目錄下文件,否則,上傳動(dòng)作將失敗。以下為“上傳”命令按鈕的代碼9,10:PrivateSubcmdPut_Click()DimbRetAsBoole
16、anDimszFileRemoteAsString,szDirRemoteAsString,szFileLocalAsStringDimszTempStringAsStringDimnPosAsLong,nTempAsLongDimnodXAsNodeSetnodX=TreeView1.SelectedItemIfbActiveSessionThenIfnodXIsNothingThenMsgBoxPleaseselectaremotedirectorytoPUTto!ExitSubEndIfIfnodX.Image=leafThenMsgBoxPleaseselectaremotedirec
17、torytoPUTto!ExitSubEndIfIfFile1.FileName=ThenMsgBoxPleaseselectalocalfiletoputExitSubEndIfszTempString=nodX.TextszDirRemote=Right(szTempString,Len(szTempString)-Len(txtServer.Text)szFileRemote=File1.FileNameszFileLocal=File1.Path&File1.FileNameIf(szDirRemote=)ThenszDirRemote=rcdszDirRemotebRet=FtpPu
18、tFile(hConnection,szFileLocal,szFileRemote,dwType,0)IfbRet=FalseThenErrorOutErr.LastDllError,FtpPutFileExitSubEndIfDimnodChildAsNode,nodNextChildAsNodeSetnodChild=nodX.ChildDoIfnodChildIsNothingThenExitDoSetnodNextChild=nodChild.NextTreeView1.Nodes.RemovenodChild.IndexIfnodNextChildIsNothingThenExit
19、DoSetnodChild=nodNextChildLoopIfnodX.Image=closedThennodX.Image=openEndIfFtpEnumDirectory(nodX.Text)FillTreeViewControl(nodX.Text)EndIfEndSub4系統(tǒng)設(shè)計(jì)測(cè)試與分析首先找到一個(gè)可以使用的FTP服務(wù)器的地址或自己配置一個(gè)FTP服務(wù)器,隨后取得相應(yīng)的權(quán)限。運(yùn)行設(shè)計(jì)完成的FTP客戶端,并填寫相關(guān)內(nèi)容,點(diǎn)擊“連接”按鈕正常連入主機(jī),具體如圖4所示:可以看到左邊的是遠(yuǎn)程服務(wù)器端的文件與目錄,而右邊是本地文件與目錄,我們可以點(diǎn)擊“上傳”和“下載”兩個(gè)按鈕對(duì)文件進(jìn)行上傳或
20、下載操作,非常簡(jiǎn)捷,方便。當(dāng)完成相關(guān)操作后,我們可以點(diǎn)擊“斷開”命令按鈕來(lái)斷開FTP連接,以保證FTP用戶正確安全的退出。實(shí)驗(yàn)測(cè)試表明我們?cè)O(shè)計(jì)的FTP客戶端程序已經(jīng)實(shí)現(xiàn)了標(biāo)準(zhǔn)的FTP客戶端的基本功能。圖4連接成功后系統(tǒng)界面5結(jié)束語(yǔ)通過此次畢業(yè)設(shè)計(jì),我發(fā)現(xiàn)了自己在做工作中的許多不足,認(rèn)識(shí)到了知識(shí)與實(shí)踐聯(lián)系的重要性,體會(huì)到只有不斷的充實(shí)自己,不斷的挑戰(zhàn)自我,才能在今后的工作生活中獲得更多的收獲。畢業(yè)設(shè)計(jì)是對(duì)自己的一個(gè)挑戰(zhàn),同時(shí)畢業(yè)設(shè)計(jì)也作為幾年來(lái)學(xué)習(xí)成果的檢驗(yàn),讓我學(xué)習(xí)到了很多東西。雖然只有短短的幾個(gè)月,但它將對(duì)我以后的前進(jìn)道路產(chǎn)生深遠(yuǎn)的影響。在此向所有幫助我的老師和同學(xué)致謝!參考文獻(xiàn)1謝希仁.計(jì)算機(jī)網(wǎng)絡(luò)(第4版)M.北京:電子工業(yè)出版社,2003:284-289.2黃嘉輝.VisualBasic.NET網(wǎng)絡(luò)程序設(shè)計(jì)M.北京:清華大學(xué)出版社,2003:17-268.3張毅.VB應(yīng)用技巧與常見問題你問我答M.北京:機(jī)械工業(yè)出版社,2003:13-166.4趙潔.同步FTP上載/下載程序的實(shí)現(xiàn)技術(shù)J.計(jì)算機(jī)系統(tǒng)應(yīng)用,2002(6):38-40.5吳光明.使用開發(fā)FTP客戶端應(yīng)用程序J.河北理工學(xué)院學(xué)報(bào),2005,27(1):59-64.6谷震離,杜根遠(yuǎn),谷
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 課程設(shè)計(jì)英文模板
- 文學(xué)文本鑒賞課程設(shè)計(jì)
- 陽(yáng)江港課程設(shè)計(jì)公司地址
- 消毒衣柜課程設(shè)計(jì)紙
- 運(yùn)算器設(shè)計(jì)課程設(shè)計(jì)
- 采礦專業(yè)課程設(shè)計(jì)
- 項(xiàng)目整合幼兒園課程設(shè)計(jì)
- 課程設(shè)計(jì)商品管理系統(tǒng)
- 鋼琴小組課課程設(shè)計(jì)
- 運(yùn)籌學(xué)系統(tǒng)優(yōu)化課程設(shè)計(jì)
- 課題申報(bào)書:表達(dá)性藝術(shù)在中小學(xué)心理健康教育中的應(yīng)用研究
- 2025年下半年貴州高速公路集團(tuán)限公司統(tǒng)一公開招聘119人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 資產(chǎn)評(píng)估服務(wù)房屋征收項(xiàng)目測(cè)繪實(shí)施方案
- 2025年經(jīng)濟(jì)形勢(shì)會(huì)議講話報(bào)告
- 北師大版小學(xué)三年級(jí)上冊(cè)數(shù)學(xué)第五單元《周長(zhǎng)》測(cè)試卷(含答案)
- 國(guó)家安全責(zé)任制落實(shí)情況報(bào)告3篇
- 2024年度順豐快遞冷鏈物流服務(wù)合同3篇
- 六年級(jí)下冊(cè)【默寫表】(牛津上海版、深圳版)(漢譯英)
- 合同簽訂培訓(xùn)
- 電工基礎(chǔ)知識(shí)培訓(xùn)課程
- 鐵路基礎(chǔ)知識(shí)題庫(kù)單選題100道及答案解析
評(píng)論
0/150
提交評(píng)論