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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、FTP客戶端的設計與實現(xiàn)摘要:FTP ( File Transfer Protocol)即文件傳輸協(xié)議是 TCP/IP協(xié)議族中的一個應用層協(xié)議。FTP客戶端利用TCP的可靠傳輸服務,減少了不同文件系統(tǒng)間的不兼容性, 實現(xiàn)了文件的傳送功能;而且它提供了直觀的文件傳輸操作方式,用戶只需要使用鼠標 拖動選擇就可以完成相關操作。文章主要介紹了FTP的相關知識、Visual Basic各種控件以及WindowsAPI函數(shù)的調用等容。在此基礎上文章最后介紹了如何使用VB完成FTP客戶端應用程序的開發(fā)。關鍵詞:VB ; FTP ; Windows API0引言FTP( File Transfer Proto

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

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

4、n sfer控件是微軟為方便使用者設計In ter net應用程序所提供的一種控件。它提供兩種In ternet protocol : HTTP及 FTP我們在 使用時,必須先設置好它的存取方式。存取方式分為直接連接或通過 proxy 來連接In ternet 網絡兩種。當我們設置好相關參數(shù)之后,In ternetTransfer控件提供兩個method(OpenUR及Execute )讓我們執(zhí)行網絡相 關操作,我們可以用這兩個命令來執(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是網絡通信的基本操作單元,目前Windows支持兩 種套接口:流套接口和數(shù)據(jù)報套接口。TCP/IP中的TCP協(xié)議使用的是流套接口,提供了面向連接的、無差錯的、發(fā)送先后順序一致、包長度不限和 非重復的網絡信息包的傳輸。TCP/IP中的UDP則使用數(shù)據(jù)報套接口,該接 口提供雙向的、有序的、無重復并有記錄邊界的數(shù)據(jù)報服務。2.5 FTP基礎理論知識FTP是TCP/IP的一種具體應用,它工作在 OSI模型的第七層,TCP模 型的第四層,即應用層,同時在傳輸層使用

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

7、如圖1所示: FTP服務器運行FTP守護進程,等待用戶的FTP請求。 用戶運行FTP命令,請求FTP服務器為其服務 FTP守護進程收到用戶的FTP請求后,派生出FTP子進程與用戶進程 交互,建立文件傳輸控制連接,使用 TCP端 口 21。 用戶輸入FTP子命令,服務器接收子命令,如命令正確,雙方各派生一個數(shù)據(jù)傳輸進程FTP-DATA建立數(shù)據(jù)連接,使用TCP端 口 20進行數(shù)據(jù)傳 輸。 本次子命令請求的數(shù)據(jù)傳輸完畢,拆除數(shù)據(jù)連接,結束FTP-DATAf程。 用戶繼續(xù)輸入FTP子命令,重復、的過程,直至用戶輸入quit命令, 雙方拆除控制連接,結束文件傳輸,結束 FTP子進程。圖1 FTP工作原理

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

9、性: FTP服務器地址:txtserver用戶名:txtuser密碼:txtpassword端口號:txtport(般為 21 )txtuser及txtpassword代表登錄此FTP服務器所需要的用戶名及密碼,若兩者皆為空字符串,則代表是以anonymous匿名)身份登入;若輸入 用戶名與密碼,Connect會以此做為其用戶名及密碼與FTP服務器建立連接; 隨后是對“連接”按鈕的設置,實現(xiàn)與服務器端的連接 。以下為“連接”命令按鈕的代碼: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遠程端瀏覽模塊本模塊是通過對treeview 控件的設置以及相關代碼的編寫來實現(xiàn)對 FTP服務器默認目錄與文件的讀取。當建立連接成功之

12、后,通過函數(shù)調用取得FTP服務器端默認最大的目錄(FTP服務器針對不同用戶開放不同的目錄 名稱)。當然FTP服務器端也必須開放目錄讀取權限,允許客戶端連接登錄 及瀏覽目錄,否則Connect的執(zhí)行將失效5,6,7。 本地瀏覽模塊本地瀏覽模塊通過 DriveComboBox DirectoryListBox 和 FileListBox 三個控件設計實現(xiàn)。DriveComboBox用于設置驅動器,DirectoryListBox 用于顯示當前驅動器所有文件與目錄,F(xiàn)ileListBox 用于顯示所選中的文件 夾中的所有文件。文件上傳下載模塊文件傳輸是一個雙向的過程,既可以把服務器上的

13、文件下載到指定的 文件下,也可以把本地某文件上傳到服務器。 文件下載模塊文件下載是通過點擊“下載”按鈕來完成對選定的遠程目錄下文件的 下載。此功能實現(xiàn)主要是通過程序獲取本地和遠程的當前路徑,區(qū)分被選 中的容類型為文件還是目錄,若為文件時執(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文件上傳模塊文件上傳是通過點擊“上傳”按鈕來完成對選定的本地文件的上傳。 上傳文件基本與下載文件類似,但 FTP服務器端必須開放目錄寫入的權限

17、, 并允許修改FTP服務器目錄下文件,否則,上傳動作將失敗。以下為“上傳”命令按鈕的代碼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)設計測試與分析首先找到一個可以使用的FTP服務器的地址或自己配置一個FTP服務器,隨后取得相應的

22、權限。運行設計完成的FTP客戶端,并填寫相關容,點擊“連接”按鈕正常連入主機,具體如圖4所示:可以看到左邊的是遠程服務器端的文件與目錄,而右邊是本地文件與目錄,我們可以點擊 “上傳”和“下載”兩個按鈕對文件進行上傳或下載操作,非常簡捷,方便。當完成相關操作后,我們可以點擊“斷開”命令按鈕來斷開FTP連接,以保證FTP用戶正確安全的退出。實驗測試表明我們設計的FTP客戶端程序已經實 現(xiàn)了標準的FTP客戶端的基本功能。圖4連接成功后系統(tǒng)界面5結束語通過此次畢業(yè)設計,我發(fā)現(xiàn)了自己在做工作中的許多不足,認識到了 知識與實踐聯(lián)系的重要性,體會到只有不斷的充實自己,不斷的挑戰(zhàn)自我, 才能在今后的工作生活中

23、獲得更多的收獲。畢業(yè)設計是對自己的一個挑戰(zhàn), 同時畢業(yè)設計也作為幾年來學習成果的檢驗,讓我學習到了很多東西。雖 然只有短短的幾個月,但它將對我以后的前進道路產生深遠的影響。在此 向所有幫助我的老師和同學致!參考文獻1 希仁.計算機網絡(第4版)M.:電子工業(yè),2003:284-289.2 黃嘉輝.Visual Basic.NET網絡程序設計M.:清華大學,2003:17-268.3 毅.VB應用技巧與常見問題你問我答M.:機械工業(yè),2003:13-166.4 潔.同步FTP上載/下載程序的實現(xiàn)技術J.計算機系統(tǒng)應用,2002(6):38-40.吳光明.使用開發(fā)FTP客戶端應用程序J.理工學院學報,2005,27(1):59-64.6 谷震離,杜根遠,谷新黎.VB應用程序開發(fā)與設計J.師專

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論