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

下載本文檔

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

文檔簡介

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

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

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

4、件是微軟為方便使用者設計 Internet 應用程序所提供的一種控件。它提供兩種 Internetprotocol:HTTPRFTR 我們在使用時,必須先設置好它的存取方式。存取方式分為直接連接或通過 proxy 來連接 Internet網絡兩種。當我們設置好相關參數(shù)之后,InternetTransfer 控件提供兩個 method(OpenURlMExecute)讓我們執(zhí)行網絡相關操作,我們可以用這兩個命令來執(zhí)行一些 Internetcommand。2.4WindowsSocket 控件Socket 由 UNIX 操作系統(tǒng)逐步移植到 WindowsWindowsSocket 規(guī)范于 90年代

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

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

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

8、FTP 子進程。FTP辰務卷圖 1FTP 工作原理示意圖3詳細設計程序數(shù)據(jù)流程圖FTP 的客戶端程序設計的主要內容如圖 2 所示:客戶登錄模塊、FTP 服務器目錄瀏覽模塊、上傳和下載模塊。設計流程:客戶端程序先連接服務器,然后瀏覽 FTP 服務器目錄,選擇文件下載或上傳,進行文件數(shù)據(jù)傳輸,最后斷開連接23。系統(tǒng)界面設計系統(tǒng)界面主要包括以下幾個方面的內容:登錄部分、遠程目錄瀏覽部分、本地目錄文件瀏覽部分等。 系統(tǒng)界面是在新建窗體的基礎上將其 Caption 改為“FTP客戶端”,增加相應的文本框、命令按鈕等一些控件實現(xiàn),具體如圖 3 所示FIT-DATAFTP請求螂戰(zhàn)儲) (新加-圖 2 程序數(shù)

9、據(jù)流程圖圖 3 系統(tǒng)界面3.3 模塊設計登錄模塊為使客戶端能登錄服務器,須設置以下屬性:第 4 頁(共 11 頁)FTP 服務器地址:txtserver用戶名:txtuser密碼:txtpassword端口號:txtport(一般為 21)txtuser 及 txtpassword 代表登錄此 FTP 服務器所需要的用戶名及密碼, 若兩者皆為空字符串,則代表是以 anonymous 倦名)身份登入;若輸入用戶名與密碼Connect 會以此做為其用戶名及密碼與 FTP 服務器建立連接;隨后是對“連接”按鈕的設置,實現(xiàn)與服務器端的連接4。以下為“連接”命令按鈕的代碼:PrivateSubcmdCo

10、nnect_Click()IfNotbActiveSessionAndhOpen0ThenIftxtServer.Text=ThenMsgBoxPleaseenteraservername!ExitSubEndIfDimnFlagAsLongIfchkPassive.ValueThennFlag=INTERNET_FLAG_PASSIVEElsenFlag=0EndIfIfhConnection=0ThenbActiveSession=FalseErrorOutErr.LastDllError,InternetConnectElsebActiveSession=TrueEnableUI(CBo

11、ol(hOpen)FillTreeViewControl(txtServer.Text)FtpEnumDirectory()IfEnumItemNameBag.Count=0ThenExitSubFillTreeViewControl(txtServer.Text)EndIfEndIfEndSub瀏覽模塊遠程端瀏覽模塊本模塊是通過對 treeview 控件的設置以及相關代碼的編寫來實現(xiàn)對 FTP 服務器默認目錄與文件的讀取。當建立連接成功之后,通過函數(shù)調用取得 FTP 服務器端默認最大的目錄(FTP 服務器針對不同用戶開放不同的目錄名稱)。當然 FTP 服務器端也必須開放目錄讀取權限,允許客戶

12、端連接登錄及瀏覽目錄,否則 Connect 的執(zhí)行將失效567。本地瀏覽模塊本地瀏覽模塊通過 DriveComboBoxDirectoryListBox 和 FileListBox 三個控件設計實現(xiàn)。DriveComboBox 用于設置驅動器,DirectoryListBox 用于顯示當前驅動器所有文件與目錄,F(xiàn)ileListBox 用于顯示所選中的文件夾中的所有文件。文件上傳下載模塊文件傳輸是一個雙向的過程,既可以把服務器上的文件下載到指定的文件下,也可以把本地某文件上傳到服務器。文件下載模塊文件下載是通過點擊“下載”按鈕來完成對選定的遠程目錄下文件的下載。此功能實現(xiàn)主要是通過程序獲取本地和

13、遠程的當前路徑,區(qū)分被選中的內容類型為文件還是目錄,若為文件時執(zhí)行下載過程,否則退出。以下為“下載”命令按鈕的代碼8:PrivateSubcmdGet_Click()DimbRetAsBooleanDimszFileRemoteAsString,szDirRemoteAsString,szFileLocalAsStringDimszTempStringAsStringDimnPosAsLong,nTempAsLongDimnodXAsNodeSetnodX=TreeView1.SelectedItemIfbActiveSessionThenIfnodXIsNothingThenMsgBoxPl

14、easeselecttheitemtoGET!ExitSubEndIfszTempString=TreeView1.SelectedItem.TextszFileRemote=szTempStringnPos=0nTemp=0DonTemp=InStr(1,szTempString,/,vbBinaryCompare)IfnTemp=0ThenExitDoszTempString=Right(szTempString,Len(szTempString)-nTemp)nPos=nTemp+nPosLoopszDirRemote=Left(szFileRemote,nPos)szFileRemot

15、e=Right(szFileRemote,Len(szFileRemote)-nPos)szFileLocal=File1.PathrcdszDirRemotebRet=FtpGetFile(hConnection,szFileRemote,szFileLocal&/&szFileRemote,False,INTERNET_FLAG_RELOAD,dwType,0)File1.RefreshIfbRet=FalseThenErrorOutErr.LastDllError,FtpGetFileElseMsgBoxNotinsessionEndIfEndSub文件上傳模塊文件上傳是

16、通過點擊“上傳”按鈕來完成對選定的本地文件的上傳。上傳文件基本與下載文件類似,但 FTP 服務器端必須開放目錄寫入的權限,并允許修改 FTP 服務器目錄下文件,否則,上傳動作將失敗。以下為“上傳”命令按鈕的代碼9,10:PrivateSubcmdPut_Click()DimbRetAsBooleanDimszFileRemoteAsString,szDirRemoteAsString,szFileLocalAsStringDimszTempStringAsStringDimnPosAsLong,nTempAsLongDimnodXAsNodeSetnodX=TreeView1.Selected

17、ItemIfbActiveSessionThenIfnodXIsNothingThenMsgBoxPleaseselectaremotedirectorytoPUTto!ExitSubEndIfIfnodX.Image=leafThenMsgBoxPleaseselectaremotedirectorytoPUTto!ExitSubEndIfIfFile1.FileName=ThenMsgBoxPleaseselectalocalfiletoputExitSubEndIfszTempString=nodX.TextszDirRemote=Right(szTempString,Len(szTem

18、pString)-Len(txtServer.Text)szFileRemote=File1.FileNameszFileLocal=File1.Path&File1.FileNameIf(szDirRemote=)ThenszDirRemote=rcdszDirRemotebRet=FtpPutFile(hConnection,szFileLocal,szFileRemote,dwType,0)IfbRet=FalseThenErrorOutErr.LastDllError,FtpPutFileExitSubEndIfDimnodChildAsNode,nodNextChildAsN

19、odeSetnodChild=nodX.ChildDoIfnodChildIsNothingThenExitDoSetnodNextChild=nodChild.NextTreeView1.Nodes.RemovenodChild.IndexIfnodNextChildIsNothingThenExitDoSetnodChild=nodNextChildLoopIfnodX.Image=closedThennodX.Image=openEndIfFtpEnumDirectory(nodX.Text)FillTreeViewControl(nodX.Text)EndIfEndSub4系統(tǒng)設計測試

20、與分析首先找到一個可以使用的 FTP 服務器的地址或自己配置一個 FTP 服務器,隨后取得相應的權限。運行設計完成的 FTP 客戶端,并填寫相關內容,點擊“連接”按鈕正常連入主機,具體如圖 4 所示:可以看到左邊的是遠程服務器端的文件與目錄,而右邊是本地文件與目錄,我們可以點擊“上傳”和“下載”兩個按鈕對文件進行上傳或下載操作,非常簡捷,方便。當完成相關操作后,我們可以點擊“斷開”命令按鈕來斷開 FTP 連接,以保證FTP 用戶正確安全的退出。 實驗測試表明我們設計的 FTP 客戶端程序已經實現(xiàn)了標準的 FTP 客戶端的基本功能。圖 4 連接成功后系統(tǒng)界面5結束語通過此次畢業(yè)設計,我發(fā)現(xiàn)了自己

21、在做工作中的許多不足,認識到了知識與實踐聯(lián)系的重要性,體會到只有不斷的充實自己, 不斷的挑戰(zhàn)自我,才能在今后的工作生活中獲得更多的收獲。 畢業(yè)設計是對自己的一個挑戰(zhàn),同時畢業(yè)設計也作為幾年來學習成果的檢驗,讓我學習到了很多東西。雖然只有短短的幾個月,但它將對我以后的前進道路產生深遠的影響。在此向所有幫助我的老師和同學致謝!參考文獻1謝希仁.計算機網絡(第 4 版)M.北京:電子工業(yè)出版社,2003:284-289.2黃嘉輝.VisualBasic.NET 網絡程序設計M.北京:清華大學出版社,2003:17-268.3張毅.VB 應用技巧與常見問題你問我答M.北京:機械工業(yè)出版社,2003:13-166.4趙潔.同步 FTP 上載/下載程序的實現(xiàn)技術J.計算機系統(tǒng)應用,2002(6):38-40.5吳光明.使用 開發(fā) FTP 客戶端應用程序J.河北理工學院學報,2005,27(1):5

溫馨提示

  • 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

提交評論