FTP客戶端的設(shè)計(jì)與實(shí)現(xiàn)_第1頁(yè)
FTP客戶端的設(shè)計(jì)與實(shí)現(xiàn)_第2頁(yè)
FTP客戶端的設(shè)計(jì)與實(shí)現(xiàn)_第3頁(yè)
已閱讀5頁(yè),還剩7頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、FTP客戶端的設(shè)計(jì)與實(shí)現(xiàn)摘要:FTP ( File Transfer Protocol)即文件傳輸協(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í)、Visual Basic各種控件以及WindowsAPI函數(shù)的調(diào)用等容。在此基礎(chǔ)上文章最后介紹了如何使用VB完成FTP客戶端應(yīng)用程序的開發(fā)。關(guān)鍵詞:VB ; FTP ; Windows API0引言FTP( File Transfer Proto

2、col)協(xié)議即文件傳輸協(xié)議是 TCP/IP體系結(jié)構(gòu)中的一個(gè)重要協(xié)議,專門用于局域網(wǎng)或In ternet中服務(wù)器和客戶端之間 進(jìn)行文件傳輸。FTP協(xié)議利用TCP的可靠傳輸服務(wù),減少了不同文件系統(tǒng)間 的不兼容,實(shí)現(xiàn)了文件的傳送功能。FTP極大的豐富了我們的網(wǎng)絡(luò)生活,成 為互聯(lián)網(wǎng)上不可缺少的服務(wù)方式之一。1設(shè)計(jì)容FTP使用客戶/服務(wù)器方式,本課題就是設(shè)計(jì)一個(gè) FTP客戶端程序,其 具有以下基本功能:能完成 FTP的打開和關(guān)閉;能實(shí)現(xiàn)本地和遠(yuǎn)程目錄的 瀏覽;能執(zhí)行文件的上傳和下載等有關(guān)操作。2開發(fā)工具簡(jiǎn)介2.1 Visual Basic 簡(jiǎn)介Basic發(fā)展到今天已經(jīng)有很多版本,如 GW-Basic、Q

3、Basic、Visual Basic等等。其中Visual Basic是最容易學(xué)習(xí)與應(yīng)用的程序語(yǔ)言之一,而 且其功能也非常強(qiáng)大。Visual Basic 6.0 自帶的一些功能控件可以幫助我 們實(shí)現(xiàn)網(wǎng)絡(luò)通信的功能,是我們網(wǎng)絡(luò)編程中的一個(gè)重要的編程工具。2.2 Windows API 函數(shù)介紹Win32 API也就是 Microsoft Windows 32位平臺(tái)的應(yīng)用程序編程接口 Windows API可以提供形形色色的服務(wù),凡是在 Windows操作系統(tǒng)環(huán)境下開 發(fā)的應(yīng)用程序,都可以調(diào)用 Windows API。2.3 In ternet Tran sfer控件介紹In ternet Tra

4、n sfer控件是微軟為方便使用者設(shè)計(jì)In ter net應(yīng)用程序所提供的一種控件。它提供兩種In ternet protocol : HTTP及 FTP我們?cè)?使用時(shí),必須先設(shè)置好它的存取方式。存取方式分為直接連接或通過 proxy 來連接In ternet 網(wǎng)絡(luò)兩種。當(dāng)我們?cè)O(shè)置好相關(guān)參數(shù)之后,In ternetTransfer控件提供兩個(gè)method(OpenUR及Execute )讓我們執(zhí)行網(wǎng)絡(luò)相 關(guān)操作,我們可以用這兩個(gè)命令來執(zhí)行一些In ternet comma nd。2.4 Windows Socket 控件Socket由UNIX操作系統(tǒng)逐步移植到 Windows Windows

5、Socket規(guī)于 90年代初,依次有1.0、1.1、2.0和3.0。Windows Socket規(guī)定義并記錄 了如何使用API; Socket是網(wǎng)絡(luò)通信的基本操作單元,目前Windows支持兩 種套接口:流套接口和數(shù)據(jù)報(bào)套接口。TCP/IP中的TCP協(xié)議使用的是流套接口,提供了面向連接的、無差錯(cuò)的、發(fā)送先后順序一致、包長(zhǎng)度不限和 非重復(fù)的網(wǎng)絡(luò)信息包的傳輸。TCP/IP中的UDP則使用數(shù)據(jù)報(bào)套接口,該接 口提供雙向的、有序的、無重復(fù)并有記錄邊界的數(shù)據(jù)報(bào)服務(wù)。2.5 FTP基礎(chǔ)理論知識(shí)FTP是TCP/IP的一種具體應(yīng)用,它工作在 OSI模型的第七層,TCP模 型的第四層,即應(yīng)用層,同時(shí)在傳輸層使用

6、TCP所以FTP客戶在和服務(wù)器建立連接前就要經(jīng)過一個(gè)被稱作"三次握手"的過程。其連接是可靠的,傳 輸是面向連接的,所以能為數(shù)據(jù)傳輸提供可靠的保證。使用FTP時(shí)必須首先登錄,在遠(yuǎn)程主機(jī)上獲得相應(yīng)的權(quán)限以后,方可 上傳或下載文件。但其違背了 In ternet的開放性,為此系統(tǒng)管理員建立了 一個(gè)特殊的用戶ID,名為anonymous, Internet 上的任何人在任何地方都 可使用該用戶ID。習(xí)慣上,人們用自己的E-mail地址作為口令。2.6 FTP工作原理FTP協(xié)議中,控制連接均由客戶端發(fā)起,而數(shù)據(jù)連接有兩種工作方式: PORT方式和PASV方式。下面以PORT方式為例,

7、如圖1所示: FTP服務(wù)器運(yùn)行FTP守護(hù)進(jìn)程,等待用戶的FTP請(qǐng)求。 用戶運(yùn)行FTP命令,請(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-DATAf程。 用戶繼續(xù)輸入FTP子命令,重復(fù)、的過程,直至用戶輸入quit命令, 雙方拆除控制連接,結(jié)束文件傳輸,結(jié)束 FTP子進(jìn)程。圖1 FTP工作原理

8、示意圖3詳細(xì)設(shè)計(jì)3.1 程序數(shù)據(jù)流程圖FTP的客戶端程序設(shè)計(jì)的主要容如圖2所示:客戶登錄模塊、FTP服務(wù) 器目錄瀏覽模塊、上傳和下載模塊。設(shè)計(jì)流程:客戶端程序先連接服務(wù)器, 然后瀏覽FTP服務(wù)器目錄,選擇文件下載或上傳,進(jìn)行文件數(shù)據(jù)傳輸,最 后斷開連接2,3。3.2 系統(tǒng)界面設(shè)計(jì)系統(tǒng)界面主要包括以下幾個(gè)方面的容:登錄部分、遠(yuǎn)程目錄瀏覽部分、 本地目錄文件瀏覽部分等。系統(tǒng)界面是在新建窗體的基礎(chǔ)上將其Caption改為“ FTP客戶端”,增加相應(yīng)的文本框、命令按鈕等一些控件實(shí)現(xiàn),具體 如圖3所示r斷拜k按.1圖2程序數(shù)據(jù)流程圖圖3系統(tǒng)界面3.3 模塊設(shè)計(jì)登錄模塊為使客戶端能登錄服務(wù)器,須設(shè)置以下屬

9、性: FTP服務(wù)器地址:txtserver用戶名:txtuser密碼:txtpassword端口號(hào):txtport(般為 21 )txtuser及txtpassword代表登錄此FTP服務(wù)器所需要的用戶名及密碼,若兩者皆為空字符串,則代表是以anonymous匿名)身份登入;若輸入 用戶名與密碼,Connect會(huì)以此做為其用戶名及密碼與FTP服務(wù)器建立連接; 隨后是對(duì)“連接”按鈕的設(shè)置,實(shí)現(xiàn)與服務(wù)器端的連接 。以下為“連接”命令按鈕的代碼:Private Sub cmdCo nn ect_Click()If Not bActiveSession And hOpe n <> 0 Th

10、e nIf txtServer.Text = "" The nMsgBox "Please en ter a server n ame!"Exit SubEnd IfDim nF lag As LongIf chkPassive.Value The nnF lag = INTERNET_FLAG_PASSIVEElsenF lag = 0End IfIf hConn ecti on = 0 ThenbActiveSessi on = FalseErrorOut Err.LastDllError, "I nternetCo nn ect"

11、;ElsebActiveSessi on = TrueEn ableUI (CBool(hOpe n)FillTreeViewCo ntrol (txtServer.Text)FtpE numDirectory ("")If Enu mltemNameBag.Co unt = 0 The n Exit SubFillTreeViewCo ntrol (txtServer.Text)End IfEnd IfEnd Sub332瀏覽模塊3.321遠(yuǎn)程端瀏覽模塊本模塊是通過對(duì)treeview 控件的設(shè)置以及相關(guān)代碼的編寫來實(shí)現(xiàn)對(duì) FTP服務(wù)器默認(rèn)目錄與文件的讀取。當(dāng)建立連接成功之

12、后,通過函數(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 用于顯示當(dāng)前驅(qū)動(dòng)器所有文件與目錄,F(xiàn)ileListBox 用于顯示所選中的文件 夾中的所有文件。文件上傳下載模塊文件傳輸是一個(gè)雙向的過程,既可以把服務(wù)器上的

13、文件下載到指定的 文件下,也可以把本地某文件上傳到服務(wù)器。 文件下載模塊文件下載是通過點(diǎn)擊“下載”按鈕來完成對(duì)選定的遠(yuǎn)程目錄下文件的 下載。此功能實(shí)現(xiàn)主要是通過程序獲取本地和遠(yuǎn)程的當(dāng)前路徑,區(qū)分被選 中的容類型為文件還是目錄,若為文件時(shí)執(zhí)行下載過程,否則退出。以下為“下載”命令按鈕的代碼8:Private Sub cmdGet_Click()Dim bRet As Boolea nDim szFileRemote As Stri ng, szDirRemote As String, szFileLocal As StringDim szTempStri ng As Stri ng

14、Dim n Pos As Long, n Temp As LongDim nodX As NodeSet n odX = TreeView1.SelectedItemIf bActiveSessi on The nIf nodX Is Nothing ThenMsgBox "Please select the item to GET!"Exit SubEnd IfszFileRemote = szTempStri ngn Pos = 0n Temp = 0Don Temp = In Str(1, szTempStri ng, "/", vbBi nary

15、Compare)If n Temp = 0 The n Exit DoszTempString= Right(szTempString,Len(szTempString) - nTemp)n Pos = n Temp + n PosLoopszDirRemote = Left(szFileRemote, n Pos)szFileRemote = Right(szFileRemote, Len( szFileRemote) - n Pos)szFileLocal = File1.Pathrcd szDirRemotebRet=FtpGetFile(hCo nn ectio n,szFileRem

16、ote,szFileLocal&"/"&szFileRemote,False, INTERNET_FLAG_RELOAD, dwType, 0)File1.RefreshIf bRet = False Then ErrorOut Err.LastDllError, "FtpGetFile"ElseMsgBox "Not in sessio n"End IfEnd Sub3.332文件上傳模塊文件上傳是通過點(diǎn)擊“上傳”按鈕來完成對(duì)選定的本地文件的上傳。 上傳文件基本與下載文件類似,但 FTP服務(wù)器端必須開放目錄寫入的權(quán)限

17、, 并允許修改FTP服務(wù)器目錄下文件,否則,上傳動(dòng)作將失敗。以下為“上傳”命令按鈕的代碼9,10:Private Sub cmdPut_Click()Dim bRet As Boolea nDim szFileRemote As Stri ng, szDirRemote As String, szFileLocal As StringDim szTempStri ng As Stri ngDim n Pos As Long, n Temp As LongDim nodX As NodeSet n odX = TreeView1.SelectedltemIf bActiveSessi on Th

18、e nIf nodX Is Nothing ThenMsgBox "Please select a remote directory to PUT to!"Exit SubEnd IfIf nodX.lm age = "leaf" The nMsgBox "Please select a remote directory to PUT to!"Exit SubEnd IfIf File1.FileName = "" The nMsgBox "Please select a local file to pu

19、t"Exit SubEnd IfszTempStri ng = no dX.TextszDirRemote=Right(szTempStri ng,Len( szTempStri ng)Len( txtServer.Text)szFileRemote = File1.FileNameszFileLocal = File1.Path & "" & File1.FileNameIf (szDirRemote = "") The n szDirRemote = ""rcd szDirRemotebRet = Ftp

20、PutFile(hC onn ectio n,szFileLocal, szFileRemote, dwType,If bRet = False ThenErrorOut Err.LastDIIError, "FtpPutFile"Exit SubEnd IfDim no dChild As Node, n odNextChild As NodeSet n odChild = n odX.ChildDoIf nodChild Is Nothing Then Exit DoSet nodNextChild = n odChild.NextTreeView1.Nodes.Rem

21、ove no dChild .In dexIf nodNextChild Is Nothing Then Exit DoSet n odChild = n odNextChildLoopIf nodX.lm age = "closed" The nnodX.lm age = "ope n"End IfFtpE nu mDirectory (no dX.Text)FillTreeViewC on trol (n odX.Text)End IfEnd Sub4系統(tǒng)設(shè)計(jì)測(cè)試與分析首先找到一個(gè)可以使用的FTP服務(wù)器的地址或自己配置一個(gè)FTP服務(wù)器,隨后取得相應(yīng)的

22、權(quán)限。運(yùn)行設(shè)計(jì)完成的FTP客戶端,并填寫相關(guān)容,點(diǎn)擊“連接”按鈕正常連入主機(jī),具體如圖4所示:可以看到左邊的是遠(yuǎn)程服務(wù)器端的文件與目錄,而右邊是本地文件與目錄,我們可以點(diǎn)擊 “上傳”和“下載”兩個(gè)按鈕對(duì)文件進(jìn)行上傳或下載操作,非常簡(jiǎn)捷,方便。當(dāng)完成相關(guān)操作后,我們可以點(diǎn)擊“斷開”命令按鈕來斷開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)自我, 才能在今后的工作生活中

23、獲得更多的收獲。畢業(yè)設(shè)計(jì)是對(duì)自己的一個(gè)挑戰(zhàn), 同時(shí)畢業(yè)設(shè)計(jì)也作為幾年來學(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 黃嘉輝.Visual Basic.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.吳光明.使用開發(fā)FTP客戶端應(yīng)用程序J.理工學(xué)院學(xué)報(bào),2005,27(1):59-64.6 谷震離,杜根遠(yuǎn),谷新黎.VB應(yīng)用程序開發(fā)與設(shè)計(jì)J.師專

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論