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

下載本文檔

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

文檔簡(jiǎn)介

德州學(xué)院 物電學(xué)院 2015屆 電子信息科學(xué)與技術(shù)專業(yè) 畢業(yè)設(shè)計(jì)FTP客戶端的設(shè)計(jì)與實(shí)現(xiàn)摘 要 FTP是Internet上用來(lái)傳送文件的協(xié)議。它是為了我們能夠在Internet上互相傳送文件而制定的文件傳送標(biāo)準(zhǔn),規(guī)定了Internet上文件如何傳送。通過FTP協(xié)議,我們就可以跟Internet上的FTP服務(wù)器進(jìn)行文件的上傳或下載。本設(shè)計(jì)以實(shí)現(xiàn)一個(gè)簡(jiǎn)單易用的FTP客戶端為目標(biāo),通過分析FTP協(xié)議的基本工作原理和FTP的數(shù)據(jù)傳輸原理,研究如何使用VC+語(yǔ)言對(duì)FTP客戶端進(jìn)行設(shè)計(jì),用Visual Studio2010設(shè)計(jì)和實(shí)現(xiàn)了FTP客戶端的開發(fā)。關(guān)鍵詞 FTP的工作原理; VC+; FTP客戶端1緒論1.1 課題背景 FTP是互聯(lián)網(wǎng)上使用最廣泛的文件傳輸協(xié)議1。在互聯(lián)網(wǎng)早期曾占據(jù)整個(gè)互聯(lián)網(wǎng)通信的三分之一,它解決了在不同操作系統(tǒng)下處理文件格式的不兼容性。傳統(tǒng)方式需要在DOS下輸入命令,對(duì)于普通用戶是件極困難的事。但有了FTP客戶端軟件后,只要輕點(diǎn)幾下鼠標(biāo)就可以完成所有操作。FTP客戶端應(yīng)該包含以下功能:登錄,瀏覽目錄,上傳和下載2。它已成為人們不可缺少的軟件之一。1.2 研究現(xiàn)狀 FTP服務(wù)是Internet上最早應(yīng)用于主機(jī)之間進(jìn)行數(shù)據(jù)傳輸?shù)幕痉?wù)之一。起初,F(xiàn)TP并不是應(yīng)用于IP網(wǎng)絡(luò)上的協(xié)議,而是20世紀(jì)6080年代美國(guó)國(guó)防部組建的ARPANET網(wǎng)絡(luò)中,用于計(jì)算機(jī)間的文件傳輸?shù)膮f(xié)議。FTP服務(wù)的一個(gè)非常重要的特點(diǎn)是其實(shí)現(xiàn)可以獨(dú)立于平臺(tái),也就是說在UNIX、DOS、Windows等操作系統(tǒng)中都可以實(shí)現(xiàn)FTP的客戶端和服務(wù)器3。盡管目前已經(jīng)普遍采用HTTP方式傳送文件,但FTP仍然是跨平臺(tái)直接傳送文件的主要方式。目前市面上可通過正規(guī)渠道獲得的成熟的FTP軟件如Server-U、Cuteftp、Transmit、Flashfxp等都是國(guó)外開發(fā)的,需要注冊(cè)、付費(fèi)使用。從其他渠道獲取的FTP軟件,則存在安全方面的問題。國(guó)內(nèi)也很難找到免費(fèi)、安全的FTP軟件。雖然操作系統(tǒng)有自帶的FTP軟件,但它是基于命令行的,沒有友好的用戶操作界面,對(duì)用戶的計(jì)算機(jī)技能要求較高,一般的用戶也不會(huì)用,而且不支持?jǐn)帱c(diǎn)續(xù)傳和文件夾的上傳、下載等功能4。因此,設(shè)計(jì)與實(shí)現(xiàn)一個(gè)開源的、適合大眾需求的FTP客戶端和服務(wù)器軟件是有必要的,是符合社會(huì)發(fā)展需要的。1.3 研究方法 本設(shè)計(jì)主要用VC+語(yǔ)言開發(fā)FTP客戶端軟件5。根據(jù)以前所學(xué)的相關(guān)知識(shí):包括計(jì)算機(jī)網(wǎng)絡(luò)技術(shù),TCP/IP詳解等;查閱Windows應(yīng)用程序開發(fā)資料,學(xué)習(xí)VC+語(yǔ)言,F(xiàn)TP通信過程,進(jìn)而實(shí)現(xiàn)FTP軟件的功能。2 FTP協(xié)議分析2.1 FTP內(nèi)容簡(jiǎn)介 文件傳輸協(xié)議(File Transfer Protocol,F(xiàn)TP)RC959是因特網(wǎng)上使用最為廣泛的文件傳輸協(xié)議6。FTP提供交互式的訪問,允許文件具有存取權(quán)限(如訪問文件必須經(jīng)過授權(quán)和有效指令),并允許用戶指明文件的類型和格式(如指明是否使用ASCII碼)。FTP屏蔽了各計(jì)算機(jī)系統(tǒng)的細(xì)節(jié),因而適合于在異構(gòu)網(wǎng)絡(luò)/主機(jī)間傳輸文件。 當(dāng)用戶(在Windows操作系統(tǒng)中有同名的應(yīng)用程序,可以使用Windows中的“運(yùn)行”對(duì)話框或在DOS命令行狀態(tài)下運(yùn)行)啟動(dòng)FTP與TCP/IP的網(wǎng)絡(luò)主機(jī)進(jìn)行文件傳輸7。實(shí)際上要用到兩個(gè)程序:本地機(jī)上的FTP客戶程序,它提出傳輸文件的請(qǐng)求;運(yùn)行在遠(yuǎn)程主機(jī)上的FTP服務(wù)器程序,它響應(yīng)用戶請(qǐng)求并把指定的文件傳輸?shù)较鄳?yīng)的主機(jī)上。從根本上說,F(xiàn)TP協(xié)議就是在網(wǎng)絡(luò)中各種不同的計(jì)算機(jī)之間按照TCP/IP協(xié)議來(lái)傳輸文件。FTP協(xié)議采用客戶機(jī)/服務(wù)器 (Client/Sever)模式,由FTP客戶端程序和FTP服務(wù)器端程序組成。使用時(shí),先啟動(dòng)FTP客戶端程序與遠(yuǎn)程主機(jī)建立連接,然后向遠(yuǎn)程主機(jī)發(fā)出傳輸命令,遠(yuǎn)程主機(jī)在收到命令后就給予響應(yīng),并執(zhí)行正確的命令。 FTP是基于TCP的文件傳送協(xié)議,其傳輸?shù)目煽啃杂蒚CP來(lái)保障。在TCP/IP協(xié)議族中還有一個(gè)基于UDP的文件傳送協(xié)議TFTP,它與FTP同屬于文件共享協(xié)議,即在傳輸過程中復(fù)制整個(gè)文件,其特點(diǎn)是:若要傳輸一個(gè)文件,就必須先獲得本地的文件副本。若要修改文件,就只能對(duì)文件的副本進(jìn)行修改,然后再將修改后的文件副本傳回到原主機(jī)8。一般說來(lái),因特網(wǎng)上有兩大類FTP文件服務(wù)器。一類是所謂的“匿名FTP服務(wù)器”,這類服務(wù)器的目的是向公眾提供文件資源服務(wù),不要求用戶事先在該服務(wù)器上進(jìn)行注冊(cè)。另一類是非匿名FTP服務(wù)器,要進(jìn)入這類服務(wù)之前,用戶必須先向服務(wù)器系統(tǒng)管理員申請(qǐng)用戶名和密碼,非匿名FTP服務(wù)器通常供內(nèi)部使用或提供咨詢服務(wù)。2.2 FTP工作原理FTP(FileTransferProtocol),是文件傳輸協(xié)議的簡(jiǎn)稱。用于Internet上的控制文件的雙向傳輸。同時(shí),它也是一個(gè)應(yīng)用程序。用戶可以通過它把自己機(jī)器與世界各地所有運(yùn)行FTP協(xié)議的服務(wù)器相連,訪問服務(wù)器上的資源和信息。FTP協(xié)議在TCP/IP協(xié)議棧中的位置如表2-1:表2-1 TCP/IP協(xié)議棧HTTP FTP TELN SMTP DNS TFTP NMP 應(yīng)用層 TCP UDP 傳輸層 IP 互聯(lián)網(wǎng)絡(luò)層 X25 ISDN LAN WLAN FDDI ATM 網(wǎng)絡(luò)接口層 當(dāng)啟動(dòng)FTP從遠(yuǎn)程計(jì)算機(jī)拷貝文件時(shí),事實(shí)上啟動(dòng)了兩個(gè)程序:一個(gè)本地機(jī)器上的FTP客戶端程序,它向FTP服務(wù)器提出拷貝文件的請(qǐng)求。另一個(gè)是啟動(dòng)在遠(yuǎn)程計(jì)算機(jī)的上的FTP服務(wù)器程序,它響應(yīng)請(qǐng)求把你指定的文件傳送到你的計(jì)算機(jī)中9。 在典型的FTP會(huì)話過程中,用戶一般坐在本地主機(jī)前進(jìn)行同遠(yuǎn)程主機(jī)之間的文件傳輸。為了能夠訪問遠(yuǎn)程賬戶,用戶必須提供用戶標(biāo)識(shí)和密碼。在通過了身份驗(yàn)證之后,用戶就可以在本地主機(jī)和遠(yuǎn)程主機(jī)之間傳輸文件了。用戶通過FTP的用戶代理與FTP進(jìn)行交互。用戶首先需要遠(yuǎn)程提供主機(jī)名或IP地址,以便本地FTP的客戶進(jìn)程能夠同遠(yuǎn)程主機(jī)上的FTP服務(wù)器進(jìn)程建立連接。然后,用戶提供其標(biāo)識(shí)和密碼。一旦驗(yàn)證通過,用戶即可在兩個(gè)系統(tǒng)之間傳輸文件。 控制連接(21號(hào)端口) FTP使用兩個(gè)并行的TCP協(xié)議來(lái)傳輸文件,一個(gè)稱為控制連接,另一個(gè)稱為數(shù)據(jù)連接??刂七B接用來(lái)在兩臺(tái)主機(jī)之間傳輸控制信息,如用戶標(biāo)識(shí)、密碼、操作遠(yuǎn)程主機(jī)文件目錄的命令、發(fā)送和取向文件的命令等。而數(shù)據(jù)連接則真正用來(lái)發(fā)送文件10。FTP的控制和數(shù)據(jù)連接如圖2-1所示。 服務(wù)器電 腦 數(shù)據(jù)連接(20號(hào)端口) FTP用戶界面FTP客戶端FTP服務(wù)器 本地文件系統(tǒng)遠(yuǎn)程文件系統(tǒng) 圖2-1 FTP工作原理示意圖 當(dāng)用戶啟動(dòng)一次與遠(yuǎn)程主機(jī)的FTP會(huì)話時(shí),F(xiàn)TP首先建立一個(gè)TCP連接到FTP服務(wù)器的21號(hào)端口。FTP的客戶端則通過該連接發(fā)送用戶標(biāo)識(shí)和密碼等,客戶端還可以通過該連接發(fā)送命令以改變遠(yuǎn)程系統(tǒng)的當(dāng)前工作目錄。當(dāng)用戶要求傳送文件時(shí),F(xiàn)TP服務(wù)器則在其20號(hào)端口上建立一個(gè)數(shù)據(jù)連接,F(xiàn)TP在該連接上傳送完畢一個(gè)文件后會(huì)立即斷開該連接。如果再一次FTP會(huì)話過程中需要傳送另一個(gè)文件,F(xiàn)TP服務(wù)器則會(huì)建立另一個(gè)連接。在整個(gè)FTP會(huì)話過程中,控制連接是始終保持的,而數(shù)據(jù)連接則會(huì)隨著文件的傳輸不斷的打開和關(guān)閉。2.3 FTP工作模式 FTP采用C/S(客戶端/服務(wù)器)模式進(jìn)行通信,但與其他的C/S模式網(wǎng)絡(luò)通信協(xié)議又有一個(gè)很大的區(qū)別。通常在進(jìn)行HTTP通信或是TELNET通信的時(shí)候,只需要一個(gè)端口進(jìn)行通信。即客戶端只需要連接一個(gè)端口進(jìn)行數(shù)據(jù)通信。如TELNET的默認(rèn)端口是23,用戶從頭到尾都只需使用這個(gè)端口。但是FTP通信除了有一個(gè)默認(rèn)端口21之外,還需要其他的端口。其中默認(rèn)端口(21)主要進(jìn)行控制連接,進(jìn)行命令協(xié)議和服務(wù)器端的響應(yīng)碼的傳輸;另外一個(gè)非標(biāo)準(zhǔn)端口主要進(jìn)行數(shù)據(jù)傳遞,如文件的上載、下載等11。至于非標(biāo)準(zhǔn)端口的產(chǎn)生則要根據(jù)用戶選擇的連接模式而定:如果客戶選擇的是主動(dòng)模式(PORT),則需要用戶端提供給服務(wù)器一個(gè)IP地址和一個(gè)非標(biāo)準(zhǔn)端口;而如果用戶采用被動(dòng)模式(PASV),則服務(wù)器端需要提供給客戶端一個(gè)IP地址和一個(gè)非標(biāo)準(zhǔn)端口。下表2-2是幾個(gè)著名的TCP端口號(hào):表2-2 TCP端口號(hào)TCP端口號(hào) 關(guān)鍵字 描述 20 FTP-DATA 文件傳輸協(xié)議數(shù)據(jù) 21 FTP 文件傳輸協(xié)議控制 23 TELNET 遠(yuǎn)程登錄協(xié)議 25 SMTP 簡(jiǎn)單郵件傳輸協(xié)議 53 DOMAIN 域名服務(wù)器 80 HTTP 超文本傳輸協(xié)議 110 POP3 郵局協(xié)議 119 NNTP 新聞傳送協(xié)議 控制連接是建立在USER-PIT和SERVER-PI之間用于交換命令與應(yīng)答的通信鏈路。數(shù)據(jù)連接是傳輸數(shù)據(jù)的全雙工連接,傳輸數(shù)據(jù)可以發(fā)生在服務(wù)器DTP和用戶DTP之間也可以發(fā)生在兩個(gè)服務(wù)器DTP之間,F(xiàn)TP可以傳輸非連續(xù)的文件,這些文件的一部分稱為頁(yè)。服務(wù)器DTP代表一種傳輸過程,它通常處于“主動(dòng)”狀態(tài),它和偵聽端口建立數(shù)據(jù)連接,它還可以為傳輸和存儲(chǔ)設(shè)置參數(shù),并根據(jù)PI的指令傳輸數(shù)據(jù)。具體工作模式如圖2-2所示: 用 戶 用戶接口 FTP命令和應(yīng)答 SPI USERPI控制連接數(shù)據(jù)連接文件系統(tǒng) SDTP UDTP文件傳輸系統(tǒng) 圖2-2 FTP工作模式 在開始階段,標(biāo)準(zhǔn)FTP命令由用戶PI產(chǎn)生并通過控制連接傳送到服務(wù)器進(jìn)程。服務(wù)器PI向用戶PI返回標(biāo)準(zhǔn)應(yīng)答。FTP命令指定數(shù)據(jù)連接參數(shù)和文件系統(tǒng)操作。用戶DTP在特定數(shù)據(jù)端口偵聽,服務(wù)器開始數(shù)據(jù)連接并以指定的參數(shù)開始數(shù)據(jù)傳輸。數(shù)據(jù)端口不必在開始FTP命令的機(jī)器上,但用戶或用戶FTP進(jìn)程必須確定它在指定的數(shù)據(jù)端口上偵聽.這個(gè)數(shù)據(jù)連接是全雙工的。2.4 簡(jiǎn)單文件傳送協(xié)議 TCP/IP協(xié)議族中還有簡(jiǎn)單文件傳輸協(xié)議,它是一個(gè)很小且易于實(shí)現(xiàn)的文件傳送協(xié)議RFC 783,RFC 1350.雖然TFTP也使用客戶機(jī)/服務(wù)器方式,但它的傳輸層使用UDP支持,因此TFTP要自己實(shí)現(xiàn)糾錯(cuò)功能。TFTP只支持文件傳輸,而不支持交互,且沒有一個(gè)龐大的命令集。TFTP沒有列目錄的功能,也不能對(duì)用戶進(jìn)行身份驗(yàn)證12。 TFTP的主要優(yōu)點(diǎn)有兩個(gè)。第一,TFTP可用于UDP環(huán)境。例如,當(dāng)需要將程序或文件同時(shí)向許多計(jì)算機(jī)下載時(shí)往往就需要使用TFTP。第二,TFTP代碼所占用的內(nèi)存空間較小。這對(duì)存儲(chǔ)容量較小的計(jì)算機(jī)或某些特殊用途的設(shè)備是很重要的。這些設(shè)備不需要硬盤,只需要固化了TFTP、UDP、和IP的小容量只讀存儲(chǔ)器即可。3 FTP客戶端的設(shè)計(jì)3.1 設(shè)計(jì)目的 FTP早已應(yīng)用在網(wǎng)絡(luò)的各個(gè)方面,比如我們?cè)谠L問網(wǎng)絡(luò)上的資源時(shí),經(jīng)常會(huì)遇到需要連接FTP服務(wù)器來(lái)下載,或者你制作了一個(gè)網(wǎng)站,想要將其上傳至服務(wù)器,讓大家能夠訪問它,這個(gè)時(shí)候就會(huì)用到FTP客戶端。一般來(lái)說,系統(tǒng)需求分析從以下幾個(gè)方面來(lái)介紹:用戶需求。軟件要簡(jiǎn)單上手,能夠匿名或者使用帳號(hào)登錄到用戶指定的服務(wù)器上,進(jìn)行訪問和數(shù)據(jù)的上傳和下載。功能需求。該系統(tǒng)主要包括以下幾個(gè)方面:登錄和連接服務(wù)器模塊;瀏覽服務(wù)器/本地目錄和文件模塊;上傳和下載文件模塊。由這三個(gè)模塊構(gòu)成該系統(tǒng)。性能需求。整個(gè)系統(tǒng)操作應(yīng)當(dāng)簡(jiǎn)便,界面友好,運(yùn)行穩(wěn)定,執(zhí)行速度快。系統(tǒng)本身運(yùn)行對(duì)計(jì)算機(jī)硬件平臺(tái)和操作系統(tǒng)平臺(tái)要求適中。因此本文所設(shè)計(jì)的FTP客戶端則適合大多數(shù)用戶使用,界面設(shè)計(jì)的很簡(jiǎn)單,使用戶可以一目了然,而且具備FTP客戶端的基本功能,可以作為下載、上傳文件的工具來(lái)使用。3.2 開發(fā)語(yǔ)言 程序中所用到的編程語(yǔ)言就是C+。C+是在C語(yǔ)言的基礎(chǔ)上開發(fā)的一種通用編程語(yǔ)言,應(yīng)用廣泛13。C+支持多種編程范式 面向?qū)ο缶幊?、泛型編程和過程化編程。最新正式標(biāo)準(zhǔn)C+14于2014年8月18日公布。其編程領(lǐng)域眾廣,常用于系統(tǒng)開發(fā),引擎開發(fā)等應(yīng)用領(lǐng)域,是至今為止最受廣大受用的最強(qiáng)大編程語(yǔ)言之一,支持類:類、封裝、重載等14! C+語(yǔ)言的主要特點(diǎn)表現(xiàn)在兩個(gè)方面,一是盡量兼容C,二是支持面向?qū)ο蟮姆椒āK俪至薈的簡(jiǎn)潔、高效的接近匯編語(yǔ)言等特點(diǎn),對(duì)C的類型系統(tǒng)進(jìn)行了改革的擴(kuò)充,因此C+比C更安全,C+的編譯系統(tǒng)能檢查出更多的類型錯(cuò)誤。另外,由于C語(yǔ)言的廣泛使用,因而極大的促進(jìn)了C+的普及和推廣。因此,我選擇使用C+語(yǔ)言來(lái)實(shí)現(xiàn)15。3.3客戶端功能模塊 FTP客戶端作為用戶連接FTP服務(wù)器的工具,需要具備一些基本功能模塊,如登錄和連接、瀏覽本地目錄和文件、上傳和下載等,其中最主要的三大功能模塊如下:登錄和連接功能模塊:將用戶本機(jī)與指定的IP地址連接,驗(yàn)證用戶名和密碼,在FTP 服務(wù)器上進(jìn)行連接。上傳功能模塊:用戶可以自行選擇本機(jī)上存儲(chǔ)的文件,上傳至FTP服務(wù)器。在用戶選擇 所需要上傳的文件,單擊文件,然后點(diǎn)擊上傳,即可將文件上傳至服務(wù)器。在上傳過程 中,用戶也可以暫停、繼續(xù)和刪除文件。下載功能模塊:連接用戶指定的FTP服務(wù)器,獲取服務(wù)器目錄下的文件列表。當(dāng)用戶選 擇項(xiàng)目為文件時(shí),單擊選定文件,然后選擇下載,文件即可下載到指定的文件夾。即用戶可已選擇任何自己想要下載的文件,通過FTP客戶端進(jìn)行下載。在下載過程中,用戶也可以暫停、繼續(xù)和刪除文件。 有了這三個(gè)基本的功能模塊,客戶端的基本應(yīng)用功能即可實(shí)現(xiàn)。3.4客戶端界面設(shè)計(jì) 為了使用戶能夠方便的使用FTP客戶端,在設(shè)計(jì)中將數(shù)據(jù)輸入和信息顯示整合在一個(gè)頁(yè)面中,全部客戶端僅包含一個(gè)主要的窗口,客戶端如下圖3-1所示。窗口中分別有以下四個(gè)部分:數(shù)據(jù)輸入部分:用來(lái)讓用戶輸入服務(wù)器地址,用戶名,密碼。服務(wù)器連接部分:點(diǎn)擊快速登錄,即可連接服務(wù)器。服務(wù)器文件信息顯示部分:主要用來(lái)顯示服務(wù)器下存儲(chǔ)的文件,方便用戶清楚的了解服 務(wù)器中存儲(chǔ)了哪些文件。操作按鈕部分:用戶可以通過單擊左側(cè)文件,點(diǎn)擊上傳,然后根據(jù)提示來(lái)實(shí)現(xiàn)文件上傳; 用戶可以通過單擊右側(cè)文件,點(diǎn)擊下載來(lái)實(shí)現(xiàn)文件下載的具體操作。整個(gè)上傳下載過程 中,用戶可以暫停、繼續(xù)和刪除文件。圖3-1 客戶端界面3.5數(shù)據(jù)流程圖 3.5.1 客戶端連接流程圖用戶輸入服務(wù)器地址、用戶名及密碼 運(yùn)行客戶端時(shí),首先是連接服務(wù)器,需要輸入服務(wù)器IP地址及用戶名和密碼點(diǎn)擊快速登錄按鈕后開始連接服務(wù)器。下圖3-2為客戶端連接流程圖。點(diǎn)擊快速登錄顯示本地目錄下的文件是否連接成功左側(cè)選擇本地目錄是在右側(cè)服務(wù)器信息顯示模塊顯示信息否在右側(cè)服務(wù)器信息顯示模塊不顯示信息 圖3-2 客戶端連接流程圖 3.5.2 上傳模塊流程圖選擇本地目錄下的磁盤當(dāng)用戶想要上傳文件時(shí),用戶可以選擇需要上傳的文件,單擊文件,點(diǎn)擊上傳。在上傳過程中可以進(jìn)行暫停、繼續(xù)和刪除操作。下圖3-3為上傳模塊流程圖。服務(wù)器列表會(huì)顯示剛才上傳的文件選擇該磁盤下的文件 點(diǎn)擊上傳服務(wù)器目標(biāo)目錄下有上傳文件是上傳是否成功上傳時(shí)可以選擇暫停、繼續(xù)和刪除否服務(wù)器目標(biāo)目錄下沒有上傳文件圖3-3 上傳模塊流程圖 3.5.3 下載模塊流程圖 當(dāng)用戶在服務(wù)器文件列表中選擇想要下載的文件后,單擊需要下載的文件,然后點(diǎn)擊下載,文件將會(huì)下載到本機(jī)上的指定文件夾下,將服務(wù)器上的文件下載至本機(jī)。下圖3-4為下載模塊流程圖。選擇要下載的文件繼續(xù)選擇需要下載的文件選定需要下載的文件夾指定文件夾下有下載的文件點(diǎn)擊下載是下載時(shí)可以暫停、繼續(xù)和刪除文件 否下載是否成功指定文件夾下沒有下載的文件圖3-4 下載模塊流程圖4 FTP軟件設(shè)計(jì)與實(shí)現(xiàn)4.1軟件總體設(shè)計(jì)與分析 根據(jù)需求分析,按照系統(tǒng)開發(fā)的基本觀點(diǎn)對(duì)功能進(jìn)行分解,從功能上可對(duì)模塊作如下劃分:連接管理模塊:主要完成主機(jī)與服務(wù)器之間的連接操作。文件管理模塊:主要完成目錄的選擇,選擇文件等。文件傳輸模塊:主要完成主機(jī)與服務(wù)器連接成功后文件的上傳與下載。傳輸控制模塊:主要進(jìn)行文件傳輸過程中的暫停、繼續(xù)和刪除。4.2主要模塊具體設(shè)計(jì) 4.2.1 連接管理設(shè)計(jì) 客戶端與服務(wù)器連接 FTP是建立在TCP之上的連接,端口號(hào)使用21。若客戶端與服務(wù)器之間成功連接, 服務(wù)器將返回字符串,如:220 GMS (Version 5.0)。前三個(gè)字符220表示客戶端與服務(wù)器成功連接,后面的字符會(huì)因服務(wù)器的不同而不同,但我們只關(guān)心前三個(gè)字符。 用戶名和密碼認(rèn)證 客戶端發(fā)送用戶名給服務(wù)器,如:USER he,如果服務(wù)器找到用戶名he,將返回字符串, 如:331 User name okay, need password。接著客戶端應(yīng)發(fā)送密碼給服務(wù)器,如:PASS 123,密碼正確,返回:230 User logged in, proceed,如果用戶名或密碼認(rèn)證沒有通過,返回如:530 Not logged in。其主要程序如下:void CMainFrame:LoginFTP() CString csServer,csPassword,csUser,csPort;m_ConnectBar.GetDlgItemText(IDC_FTPSERVER,csServer);m_ConnectBar.GetDlgItemText(IDC_FTPPORT,csPort);m_ConnectBar.GetDlgItemText(IDC_PASSWORD,csPassword);m_ConnectBar.GetDlgItemText(IDC_USER,csUser);if ( !csServer.IsEmpty() & !csPassword.IsEmpty() & !csUser.IsEmpty() & !csPort.IsEmpty() try m_pFtp = Session.GetFtpConnection(csServer,csUser,csPassword,atoi(csPort);m_bLoginSucc = TRUE;CString csCurDir;m_pFtp-GetCurrentDirectory(csCurDir);if (m_pFtpView != NULL) m_pFtpView-m_RemoteFiles.m_FtpServer = csServer;m_pFtpView-m_RemoteFiles.m_Port = csPort;m_pFtpView-m_RemoteFiles.m_User = csUser;m_pFtpView-m_RemoteFiles.m_Password = csPassword;m_csServer = csServer;m_csPassword = csPassword;m_csUser = csUser;m_nPort = atoi(csPort);m_pFtpView-m_RemoteFiles.m_BaseDir = csCurDir;m_pFtpView-m_RemoteFiles.DisplayPath();SetTimer(1,5000,NULL); catch(CInternetException &e) m_bLoginSucc = FALSE;delete m_pFtp;delete m_pFtp; 4.2.2 文件管理設(shè)計(jì)文件管理設(shè)計(jì)主要是完成文件選擇和顯示。使用戶根據(jù)自己的不同需要選擇不同的文件夾,進(jìn)行文件的上傳與下載。其主要程序如下:void CSortListCtrl:OnDblclk(NMHDR* pNMHDR, LRESULT* pResult) int nItem = GetSelectionMark();if (nItem != -1) if (m_nListType=0)/進(jìn)入本地系統(tǒng)子目錄 /判斷是否為目錄int nFlag =GetItemData(nItem);if (nFlag=1) /獲取完整的目錄信息CString csFoder = GetItemText(nItem,0);csFoder += ;/獲取目錄 m_CurDir += csFoder; DisplayPath(m_CurDir);else/進(jìn)入FTP服務(wù)器子目錄 /判斷是否為目錄int nFlag =GetItemData(nItem);if (nFlag=1) /獲取完整的目錄信息CString csFoder = GetItemText(nItem,0);csFoder += /;/獲取目錄m_CurDir += csFoder;DisplayPath(m_CurDir);*pResult = 0; 4.2.3文件傳輸設(shè)計(jì)該模塊主要進(jìn)行文件的上傳與下載。這里主要應(yīng)用了多線程的斷點(diǎn)續(xù)傳。多線程下載的原理是這樣的:通常服務(wù)器同時(shí)與多個(gè)用戶連接,用戶之間共享帶寬。如果N個(gè)用戶的優(yōu)先級(jí)都相同,那么每個(gè)用戶連接到該服務(wù)器上的實(shí)際帶寬就是服務(wù)器帶寬的N分之一。可以想象,如果用戶數(shù)目較多,則每個(gè)用戶只能占有可憐的一點(diǎn)帶寬。如果你通過多個(gè)線程與服務(wù)器連接,那么你就可以榨取到較高的帶寬了。其主要程序如下:/上傳文件的線程函數(shù)DWORD _stdcall UploadThreadProc( LPVOID lpParameter) ThreadParam *Param = (ThreadParam *)lpParameter;CMainFrame * pDlg = Param-pDlg;int nItem = Param-nItem;char downfileMAX_PATH = 0;strcpy(downfile,Param-m_DownFile);char relfileMAX_PATH = 0;strcpy(relfile,Param-m_RelativeFile);pDlg-m_pTastView-m_TastList.SetItemText(nItem,4,正在上傳);if (Param-nDownFlag =0)/當(dāng)前選擇的是文件 pDlg-UpLoadFile(pDlg,downfile,relfile,(DWORD)Param-m_hThread,true,pDlg-m_csServer, pDlg-m_csUser,pDlg-m_csPassword,pDlg-m_nPort);else if(Param-nDownFlag =1) pDlg-UpLoadFile(pDlg,downfile,relfile,(DWORD)Param-m_hThread,false,pDlg-m_csServer, pDlg-m_csUser,pDlg-m_csPassword,pDlg-m_nPort);if (pDlg-m_dwStop = (DWORD)Param-m_hThread)/終止線程后設(shè)置初始標(biāo)記 pDlg-m_dwStop = 0;pDlg-m_pTastView-m_TastList.SetItemText(nItem,3,完成);pDlg-m_pTastView-m_TastList.SetItemText(nItem,4,上傳完成);pDlg-DeleteItemFormData(&pDlg-m_pTastView-m_TastList,(DWORD)Param-m_hThread);delete Param;int nCount = pDlg-m_pTastView-m_TastList.GetItemCount();if (pDlg-m_bTurnOff & nCount=0) pDlg-TurnOff();/關(guān)機(jī)操作return 0;/下載文件的線程函數(shù)DWORD _stdcall DownloadThreadProc( LPVOID lpParameter) ThreadParam *Param = (ThreadParam *)lpParameter;CMainFrame * pDlg = Param-pDlg;int nItem = Param-nItem;char downfileMAX_PATH = 0;strcpy(downfile,Param-m_DownFile);char relfileMAX_PATH = 0;strcpy(relfile,Param-m_RelativeFile);pDlg-m_pTastView-m_TastList.SetItemText(nItem,4,正在下載);if (Param-nDownFlag =0)/當(dāng)前選擇的是文件 pDlg-DownLoadFile(pDlg,downfile,relfile,(DWORD)Param-m_hThread,true,pDlg-m_csServer, pDlg-m_csUser,pDlg-m_csPassword,pDlg-m_nPort,pDlg-m_csDownDir);else if(Param-nDownFlag =1) pDlg-DownLoadFile(pDlg,downfile,relfile,(DWORD)Param-m_hThread,false,pDlg-m_csServer, pDlg-m_csUser,pDlg-m_csPassword,pDlg-m_nPort,pDlg-m_csDownDir);pDlg-m_pTastView-m_TastList.SetItemText(nItem,3,完成);pDlg-m_pTastView-m_TastList.SetItemText(nItem,4,下載完成);if (pDlg-m_dwStop = (DWORD)Param-m_hThread)/終止線程后設(shè)置初始標(biāo)記 pDlg-m_dwStop = 0;pDlg-DeleteItemFormData(&pDlg-m_pTastView-m_TastList,(DWORD)Param-m_hThread);int nCount = pDlg-m_pTastView-m_TastList.GetItemCount();delete Param;if (pDlg-m_bTurnOff & nCount = 0 ) pDlg-TurnOff();/關(guān)機(jī)操作return 0; 4.2.4 傳輸控制設(shè)計(jì)該過程主要實(shí)現(xiàn)文件在上傳和下載過程中可以暫停、繼續(xù)和刪除的功能。其主要程序如下:void CTastListView:OnBtStop() int nSel = m_TastList.GetSelectionMark();if (nSel != -1)DWORD nItemData = m_TastList.GetItemData(nSel);CString csState = m_TastList.GetItemText(nSel,3);if (csState != 暫停) SuspendThread(HANDLE)nItemData);m_TastList.SetItemText(nSel,3,暫停); void CTastListView:OnBtContinue() int nSel = m_TastList.GetSelectionMark();if (nSel != -1) DWORD nItemData = m_TastList.GetItemData(nSel);CString csType = m_TastList.GetItemText(nSel,1);ResumeThread(HANDLE)nItemData);if (csType=下載) m_TastList.SetItemText(nSel,3,正在下載);elsem_TastList.SetItemText(nSel,3,正在上傳);void CTastListView:OnBtDelete() int nSel = m_TastList.GetSelectionMark();if (nSel != -1) DWORD nItemData = m_TastList.GetItemData(nSel);CMainFrame * pDlg = (CMainFrame*)AfxGetMainWnd();pDlg-m_dwStop = nItemData;5功能運(yùn)行測(cè)試 在Windows7中開啟系統(tǒng)自帶FTP服務(wù)器的操作過程具體如下:首先打開控制面板,點(diǎn)擊系統(tǒng)與安全,再點(diǎn)擊管理工具,找到Internet信息服務(wù)(IIS)管理器,如下圖5-1所示: 圖5-1 Internet信息服務(wù)(IIS)管理器 雙擊打開Internet信息服務(wù)(IIS)管理器,右擊網(wǎng)站,再點(diǎn)擊添加FTP站點(diǎn),如下圖5-2所示:圖5-2 添加FTP站點(diǎn) FTP站點(diǎn)添加的具體操作:先輸入FTP站點(diǎn)名稱,再輸入物理路徑,接著輸入IP地址和身份驗(yàn)證。如下圖5-3,圖5-4所示:圖5-3 FTP站點(diǎn)名稱 圖5-4 FTP站點(diǎn)中的IP地址和身份驗(yàn)證為了驗(yàn)證程序是否能正常運(yùn)行,我選擇連接IP為35的FTP服務(wù)器來(lái)測(cè)試。首先是服務(wù)器連接的驗(yàn)證:在服務(wù)器地址中輸35,在用戶名中輸入王旭,在密碼欄中輸入0509,點(diǎn)擊快速登錄按鈕后,結(jié)果如下圖5-5所示:圖5-5 FTP客戶端接下來(lái)是上傳功能的驗(yàn)證:在左側(cè)的本地信息選擇自己想要上傳信息的磁盤,然后在該磁盤下選擇文件,單擊文件,點(diǎn)擊上傳,則文件開始上傳。如圖5-6,圖5-7所示:圖5-6 文件選擇圖5-7 文件上傳 最后是下載程序的驗(yàn)證:在服務(wù)器文件列表中,選中自己想要下載的文件,選中自己想要下載文件的存儲(chǔ)目錄,點(diǎn)擊下載,文件則開始下載。具體操作如下圖5-8,圖5-9,圖5-10所示:圖5-8 下載文件存儲(chǔ)目錄選擇圖5-9 文件選擇圖5-10 文件下載在上傳和下載過程中進(jìn)行文件的暫停、繼續(xù)與刪除。如下圖5-11,圖5-12,圖5-13所示:圖5-11 下載中暫停圖5-12 暫停后再繼續(xù)上傳圖5-13 下載中文件刪除6結(jié)論 FTP的主要作用,就是讓用戶連接上一個(gè)遠(yuǎn)程計(jì)算機(jī)(這些計(jì)算機(jī)上運(yùn)行著FTP服務(wù)器程序)察看遠(yuǎn)程計(jì)算機(jī)有哪些文件,然后把文件從遠(yuǎn)程計(jì)算機(jī)上下載到本地計(jì)算機(jī),或把本地計(jì)算機(jī)的文件上傳到遠(yuǎn)程計(jì)算機(jī),而FTP客戶端則實(shí)現(xiàn)了用戶方便連接和訪問FTP服務(wù)器的功能。此次FTP客戶端的設(shè)計(jì),分析了FTP協(xié)議的工作原理和FTP的數(shù)據(jù)傳輸原理,利用C+語(yǔ)言進(jìn)行了程序的設(shè)計(jì),并在visual studio2010軟件下進(jìn)行調(diào)試,實(shí)現(xiàn)了FTP客戶端的基本功能。該客戶端能夠使用戶可以根據(jù)自己的需要選擇不同磁盤下的文件進(jìn)行上傳與下載,并且在上傳和下載過程中用戶可以暫停文件,也可以刪除文件,完成了基本的FTP軟件功能。通過這次畢業(yè)設(shè)計(jì)的制作,我了解了C+語(yǔ)言的使用和功能,也對(duì)FTP的工作協(xié)議有了一定的了解,學(xué)會(huì)了FTP客戶端的使用。參考文獻(xiàn)1 馮博琴, 陳文革. 計(jì)算機(jī)網(wǎng)絡(luò)(第二版)M. 北京: 高等教育出版社, 2008: 103-1062 馮博琴. 計(jì)算機(jī)網(wǎng)絡(luò)實(shí)驗(yàn)教程M. 北京: 高等教育出版社, 2005: 15-203 鄭毛祥, 程新麗. 計(jì)算機(jī)網(wǎng)絡(luò)M. 武漢: 華中科技大學(xué)出版社, 2014: 42-444 尹向東. 計(jì)算機(jī)網(wǎng)絡(luò)實(shí)驗(yàn)實(shí)訓(xùn)教程M. 西安: 西安電子科技大學(xué)出版社, 2014: 65-785 鄭阿奇. Visual C+網(wǎng)絡(luò)編程教程(Visual Studio 2010)M. 北京: 電子工業(yè)出版社, 2013: 130-1606 葉新銘. 計(jì)算機(jī)網(wǎng)絡(luò)M. 北京: 機(jī)械工業(yè)出版社, 2001: 242-2837 謝希仁. 計(jì)算機(jī)網(wǎng)絡(luò)(第五版)M. 北京: 電子工業(yè)出版社, 2008: 150-1608 葉俊民. 軟件工程(第二版)M. 北京: 清華大學(xué)出版社, 2006: 51-739 周舸. 計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)基礎(chǔ)M. 北京: 人民郵電出版社, 2014: 130-13510 C. Dou, K. Kakushima, P. Ahmet et al.Resistive switching behavior of a CeO2 based ReRAM cell incorporated with Si buffer layerJ. Microelectronics Reliability, 2012,2(3): 30-3811 Yue Yu, JingLong Li, Xiao

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論