




已閱讀5頁,還剩18頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
德州學(xué)院 物電學(xué)院 2015屆 電子信息科學(xué)與技術(shù)專業(yè) 畢業(yè)設(shè)計FTP客戶端的設(shè)計與實現(xiàn)摘 要 FTP是Internet上用來傳送文件的協(xié)議。它是為了我們能夠在Internet上互相傳送文件而制定的文件傳送標準,規(guī)定了Internet上文件如何傳送。通過FTP協(xié)議,我們就可以跟Internet上的FTP服務(wù)器進行文件的上傳或下載。本設(shè)計以實現(xiàn)一個簡單易用的FTP客戶端為目標,通過分析FTP協(xié)議的基本工作原理和FTP的數(shù)據(jù)傳輸原理,研究如何使用VC+語言對FTP客戶端進行設(shè)計,用Visual Studio2010設(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ù)整個互聯(lián)網(wǎng)通信的三分之一,它解決了在不同操作系統(tǒng)下處理文件格式的不兼容性。傳統(tǒng)方式需要在DOS下輸入命令,對于普通用戶是件極困難的事。但有了FTP客戶端軟件后,只要輕點幾下鼠標就可以完成所有操作。FTP客戶端應(yīng)該包含以下功能:登錄,瀏覽目錄,上傳和下載2。它已成為人們不可缺少的軟件之一。1.2 研究現(xiàn)狀 FTP服務(wù)是Internet上最早應(yīng)用于主機之間進行數(shù)據(jù)傳輸?shù)幕痉?wù)之一。起初,F(xiàn)TP并不是應(yīng)用于IP網(wǎng)絡(luò)上的協(xié)議,而是20世紀6080年代美國國防部組建的ARPANET網(wǎng)絡(luò)中,用于計算機間的文件傳輸?shù)膮f(xié)議。FTP服務(wù)的一個非常重要的特點是其實現(xiàn)可以獨立于平臺,也就是說在UNIX、DOS、Windows等操作系統(tǒng)中都可以實現(xiàn)FTP的客戶端和服務(wù)器3。盡管目前已經(jīng)普遍采用HTTP方式傳送文件,但FTP仍然是跨平臺直接傳送文件的主要方式。目前市面上可通過正規(guī)渠道獲得的成熟的FTP軟件如Server-U、Cuteftp、Transmit、Flashfxp等都是國外開發(fā)的,需要注冊、付費使用。從其他渠道獲取的FTP軟件,則存在安全方面的問題。國內(nèi)也很難找到免費、安全的FTP軟件。雖然操作系統(tǒng)有自帶的FTP軟件,但它是基于命令行的,沒有友好的用戶操作界面,對用戶的計算機技能要求較高,一般的用戶也不會用,而且不支持斷點續(xù)傳和文件夾的上傳、下載等功能4。因此,設(shè)計與實現(xiàn)一個開源的、適合大眾需求的FTP客戶端和服務(wù)器軟件是有必要的,是符合社會發(fā)展需要的。1.3 研究方法 本設(shè)計主要用VC+語言開發(fā)FTP客戶端軟件5。根據(jù)以前所學(xué)的相關(guān)知識:包括計算機網(wǎng)絡(luò)技術(shù),TCP/IP詳解等;查閱Windows應(yīng)用程序開發(fā)資料,學(xué)習(xí)VC+語言,F(xiàn)TP通信過程,進而實現(xiàn)FTP軟件的功能。2 FTP協(xié)議分析2.1 FTP內(nèi)容簡介 文件傳輸協(xié)議(File Transfer Protocol,F(xiàn)TP)RC959是因特網(wǎng)上使用最為廣泛的文件傳輸協(xié)議6。FTP提供交互式的訪問,允許文件具有存取權(quán)限(如訪問文件必須經(jīng)過授權(quán)和有效指令),并允許用戶指明文件的類型和格式(如指明是否使用ASCII碼)。FTP屏蔽了各計算機系統(tǒng)的細節(jié),因而適合于在異構(gòu)網(wǎng)絡(luò)/主機間傳輸文件。 當用戶(在Windows操作系統(tǒng)中有同名的應(yīng)用程序,可以使用Windows中的“運行”對話框或在DOS命令行狀態(tài)下運行)啟動FTP與TCP/IP的網(wǎng)絡(luò)主機進行文件傳輸7。實際上要用到兩個程序:本地機上的FTP客戶程序,它提出傳輸文件的請求;運行在遠程主機上的FTP服務(wù)器程序,它響應(yīng)用戶請求并把指定的文件傳輸?shù)较鄳?yīng)的主機上。從根本上說,F(xiàn)TP協(xié)議就是在網(wǎng)絡(luò)中各種不同的計算機之間按照TCP/IP協(xié)議來傳輸文件。FTP協(xié)議采用客戶機/服務(wù)器 (Client/Sever)模式,由FTP客戶端程序和FTP服務(wù)器端程序組成。使用時,先啟動FTP客戶端程序與遠程主機建立連接,然后向遠程主機發(fā)出傳輸命令,遠程主機在收到命令后就給予響應(yīng),并執(zhí)行正確的命令。 FTP是基于TCP的文件傳送協(xié)議,其傳輸?shù)目煽啃杂蒚CP來保障。在TCP/IP協(xié)議族中還有一個基于UDP的文件傳送協(xié)議TFTP,它與FTP同屬于文件共享協(xié)議,即在傳輸過程中復(fù)制整個文件,其特點是:若要傳輸一個文件,就必須先獲得本地的文件副本。若要修改文件,就只能對文件的副本進行修改,然后再將修改后的文件副本傳回到原主機8。一般說來,因特網(wǎng)上有兩大類FTP文件服務(wù)器。一類是所謂的“匿名FTP服務(wù)器”,這類服務(wù)器的目的是向公眾提供文件資源服務(wù),不要求用戶事先在該服務(wù)器上進行注冊。另一類是非匿名FTP服務(wù)器,要進入這類服務(wù)之前,用戶必須先向服務(wù)器系統(tǒng)管理員申請用戶名和密碼,非匿名FTP服務(wù)器通常供內(nèi)部使用或提供咨詢服務(wù)。2.2 FTP工作原理FTP(FileTransferProtocol),是文件傳輸協(xié)議的簡稱。用于Internet上的控制文件的雙向傳輸。同時,它也是一個應(yīng)用程序。用戶可以通過它把自己機器與世界各地所有運行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ò)接口層 當啟動FTP從遠程計算機拷貝文件時,事實上啟動了兩個程序:一個本地機器上的FTP客戶端程序,它向FTP服務(wù)器提出拷貝文件的請求。另一個是啟動在遠程計算機的上的FTP服務(wù)器程序,它響應(yīng)請求把你指定的文件傳送到你的計算機中9。 在典型的FTP會話過程中,用戶一般坐在本地主機前進行同遠程主機之間的文件傳輸。為了能夠訪問遠程賬戶,用戶必須提供用戶標識和密碼。在通過了身份驗證之后,用戶就可以在本地主機和遠程主機之間傳輸文件了。用戶通過FTP的用戶代理與FTP進行交互。用戶首先需要遠程提供主機名或IP地址,以便本地FTP的客戶進程能夠同遠程主機上的FTP服務(wù)器進程建立連接。然后,用戶提供其標識和密碼。一旦驗證通過,用戶即可在兩個系統(tǒng)之間傳輸文件。 控制連接(21號端口) FTP使用兩個并行的TCP協(xié)議來傳輸文件,一個稱為控制連接,另一個稱為數(shù)據(jù)連接。控制連接用來在兩臺主機之間傳輸控制信息,如用戶標識、密碼、操作遠程主機文件目錄的命令、發(fā)送和取向文件的命令等。而數(shù)據(jù)連接則真正用來發(fā)送文件10。FTP的控制和數(shù)據(jù)連接如圖2-1所示。 服務(wù)器電 腦 數(shù)據(jù)連接(20號端口) FTP用戶界面FTP客戶端FTP服務(wù)器 本地文件系統(tǒng)遠程文件系統(tǒng) 圖2-1 FTP工作原理示意圖 當用戶啟動一次與遠程主機的FTP會話時,F(xiàn)TP首先建立一個TCP連接到FTP服務(wù)器的21號端口。FTP的客戶端則通過該連接發(fā)送用戶標識和密碼等,客戶端還可以通過該連接發(fā)送命令以改變遠程系統(tǒng)的當前工作目錄。當用戶要求傳送文件時,F(xiàn)TP服務(wù)器則在其20號端口上建立一個數(shù)據(jù)連接,F(xiàn)TP在該連接上傳送完畢一個文件后會立即斷開該連接。如果再一次FTP會話過程中需要傳送另一個文件,F(xiàn)TP服務(wù)器則會建立另一個連接。在整個FTP會話過程中,控制連接是始終保持的,而數(shù)據(jù)連接則會隨著文件的傳輸不斷的打開和關(guān)閉。2.3 FTP工作模式 FTP采用C/S(客戶端/服務(wù)器)模式進行通信,但與其他的C/S模式網(wǎng)絡(luò)通信協(xié)議又有一個很大的區(qū)別。通常在進行HTTP通信或是TELNET通信的時候,只需要一個端口進行通信。即客戶端只需要連接一個端口進行數(shù)據(jù)通信。如TELNET的默認端口是23,用戶從頭到尾都只需使用這個端口。但是FTP通信除了有一個默認端口21之外,還需要其他的端口。其中默認端口(21)主要進行控制連接,進行命令協(xié)議和服務(wù)器端的響應(yīng)碼的傳輸;另外一個非標準端口主要進行數(shù)據(jù)傳遞,如文件的上載、下載等11。至于非標準端口的產(chǎn)生則要根據(jù)用戶選擇的連接模式而定:如果客戶選擇的是主動模式(PORT),則需要用戶端提供給服務(wù)器一個IP地址和一個非標準端口;而如果用戶采用被動模式(PASV),則服務(wù)器端需要提供給客戶端一個IP地址和一個非標準端口。下表2-2是幾個著名的TCP端口號:表2-2 TCP端口號TCP端口號 關(guān)鍵字 描述 20 FTP-DATA 文件傳輸協(xié)議數(shù)據(jù) 21 FTP 文件傳輸協(xié)議控制 23 TELNET 遠程登錄協(xié)議 25 SMTP 簡單郵件傳輸協(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ā)生在兩個服務(wù)器DTP之間,F(xiàn)TP可以傳輸非連續(xù)的文件,這些文件的一部分稱為頁。服務(wù)器DTP代表一種傳輸過程,它通常處于“主動”狀態(tài),它和偵聽端口建立數(shù)據(jù)連接,它還可以為傳輸和存儲設(shè)置參數(shù),并根據(jù)PI的指令傳輸數(shù)據(jù)。具體工作模式如圖2-2所示: 用 戶 用戶接口 FTP命令和應(yīng)答 SPI USERPI控制連接數(shù)據(jù)連接文件系統(tǒng) SDTP UDTP文件傳輸系統(tǒng) 圖2-2 FTP工作模式 在開始階段,標準FTP命令由用戶PI產(chǎn)生并通過控制連接傳送到服務(wù)器進程。服務(wù)器PI向用戶PI返回標準應(yīng)答。FTP命令指定數(shù)據(jù)連接參數(shù)和文件系統(tǒng)操作。用戶DTP在特定數(shù)據(jù)端口偵聽,服務(wù)器開始數(shù)據(jù)連接并以指定的參數(shù)開始數(shù)據(jù)傳輸。數(shù)據(jù)端口不必在開始FTP命令的機器上,但用戶或用戶FTP進程必須確定它在指定的數(shù)據(jù)端口上偵聽.這個數(shù)據(jù)連接是全雙工的。2.4 簡單文件傳送協(xié)議 TCP/IP協(xié)議族中還有簡單文件傳輸協(xié)議,它是一個很小且易于實現(xiàn)的文件傳送協(xié)議RFC 783,RFC 1350.雖然TFTP也使用客戶機/服務(wù)器方式,但它的傳輸層使用UDP支持,因此TFTP要自己實現(xiàn)糾錯功能。TFTP只支持文件傳輸,而不支持交互,且沒有一個龐大的命令集。TFTP沒有列目錄的功能,也不能對用戶進行身份驗證12。 TFTP的主要優(yōu)點有兩個。第一,TFTP可用于UDP環(huán)境。例如,當需要將程序或文件同時向許多計算機下載時往往就需要使用TFTP。第二,TFTP代碼所占用的內(nèi)存空間較小。這對存儲容量較小的計算機或某些特殊用途的設(shè)備是很重要的。這些設(shè)備不需要硬盤,只需要固化了TFTP、UDP、和IP的小容量只讀存儲器即可。3 FTP客戶端的設(shè)計3.1 設(shè)計目的 FTP早已應(yīng)用在網(wǎng)絡(luò)的各個方面,比如我們在訪問網(wǎng)絡(luò)上的資源時,經(jīng)常會遇到需要連接FTP服務(wù)器來下載,或者你制作了一個網(wǎng)站,想要將其上傳至服務(wù)器,讓大家能夠訪問它,這個時候就會用到FTP客戶端。一般來說,系統(tǒng)需求分析從以下幾個方面來介紹:用戶需求。軟件要簡單上手,能夠匿名或者使用帳號登錄到用戶指定的服務(wù)器上,進行訪問和數(shù)據(jù)的上傳和下載。功能需求。該系統(tǒng)主要包括以下幾個方面:登錄和連接服務(wù)器模塊;瀏覽服務(wù)器/本地目錄和文件模塊;上傳和下載文件模塊。由這三個模塊構(gòu)成該系統(tǒng)。性能需求。整個系統(tǒng)操作應(yīng)當簡便,界面友好,運行穩(wěn)定,執(zhí)行速度快。系統(tǒng)本身運行對計算機硬件平臺和操作系統(tǒng)平臺要求適中。因此本文所設(shè)計的FTP客戶端則適合大多數(shù)用戶使用,界面設(shè)計的很簡單,使用戶可以一目了然,而且具備FTP客戶端的基本功能,可以作為下載、上傳文件的工具來使用。3.2 開發(fā)語言 程序中所用到的編程語言就是C+。C+是在C語言的基礎(chǔ)上開發(fā)的一種通用編程語言,應(yīng)用廣泛13。C+支持多種編程范式 面向?qū)ο缶幊?、泛型編程和過程化編程。最新正式標準C+14于2014年8月18日公布。其編程領(lǐng)域眾廣,常用于系統(tǒng)開發(fā),引擎開發(fā)等應(yīng)用領(lǐng)域,是至今為止最受廣大受用的最強大編程語言之一,支持類:類、封裝、重載等14! C+語言的主要特點表現(xiàn)在兩個方面,一是盡量兼容C,二是支持面向?qū)ο蟮姆椒āK俪至薈的簡潔、高效的接近匯編語言等特點,對C的類型系統(tǒng)進行了改革的擴充,因此C+比C更安全,C+的編譯系統(tǒng)能檢查出更多的類型錯誤。另外,由于C語言的廣泛使用,因而極大的促進了C+的普及和推廣。因此,我選擇使用C+語言來實現(xiàn)15。3.3客戶端功能模塊 FTP客戶端作為用戶連接FTP服務(wù)器的工具,需要具備一些基本功能模塊,如登錄和連接、瀏覽本地目錄和文件、上傳和下載等,其中最主要的三大功能模塊如下:登錄和連接功能模塊:將用戶本機與指定的IP地址連接,驗證用戶名和密碼,在FTP 服務(wù)器上進行連接。上傳功能模塊:用戶可以自行選擇本機上存儲的文件,上傳至FTP服務(wù)器。在用戶選擇 所需要上傳的文件,單擊文件,然后點擊上傳,即可將文件上傳至服務(wù)器。在上傳過程 中,用戶也可以暫停、繼續(xù)和刪除文件。下載功能模塊:連接用戶指定的FTP服務(wù)器,獲取服務(wù)器目錄下的文件列表。當用戶選 擇項目為文件時,單擊選定文件,然后選擇下載,文件即可下載到指定的文件夾。即用戶可已選擇任何自己想要下載的文件,通過FTP客戶端進行下載。在下載過程中,用戶也可以暫停、繼續(xù)和刪除文件。 有了這三個基本的功能模塊,客戶端的基本應(yīng)用功能即可實現(xiàn)。3.4客戶端界面設(shè)計 為了使用戶能夠方便的使用FTP客戶端,在設(shè)計中將數(shù)據(jù)輸入和信息顯示整合在一個頁面中,全部客戶端僅包含一個主要的窗口,客戶端如下圖3-1所示。窗口中分別有以下四個部分:數(shù)據(jù)輸入部分:用來讓用戶輸入服務(wù)器地址,用戶名,密碼。服務(wù)器連接部分:點擊快速登錄,即可連接服務(wù)器。服務(wù)器文件信息顯示部分:主要用來顯示服務(wù)器下存儲的文件,方便用戶清楚的了解服 務(wù)器中存儲了哪些文件。操作按鈕部分:用戶可以通過單擊左側(cè)文件,點擊上傳,然后根據(jù)提示來實現(xiàn)文件上傳; 用戶可以通過單擊右側(cè)文件,點擊下載來實現(xiàn)文件下載的具體操作。整個上傳下載過程 中,用戶可以暫停、繼續(xù)和刪除文件。圖3-1 客戶端界面3.5數(shù)據(jù)流程圖 3.5.1 客戶端連接流程圖用戶輸入服務(wù)器地址、用戶名及密碼 運行客戶端時,首先是連接服務(wù)器,需要輸入服務(wù)器IP地址及用戶名和密碼點擊快速登錄按鈕后開始連接服務(wù)器。下圖3-2為客戶端連接流程圖。點擊快速登錄顯示本地目錄下的文件是否連接成功左側(cè)選擇本地目錄是在右側(cè)服務(wù)器信息顯示模塊顯示信息否在右側(cè)服務(wù)器信息顯示模塊不顯示信息 圖3-2 客戶端連接流程圖 3.5.2 上傳模塊流程圖選擇本地目錄下的磁盤當用戶想要上傳文件時,用戶可以選擇需要上傳的文件,單擊文件,點擊上傳。在上傳過程中可以進行暫停、繼續(xù)和刪除操作。下圖3-3為上傳模塊流程圖。服務(wù)器列表會顯示剛才上傳的文件選擇該磁盤下的文件 點擊上傳服務(wù)器目標目錄下有上傳文件是上傳是否成功上傳時可以選擇暫停、繼續(xù)和刪除否服務(wù)器目標目錄下沒有上傳文件圖3-3 上傳模塊流程圖 3.5.3 下載模塊流程圖 當用戶在服務(wù)器文件列表中選擇想要下載的文件后,單擊需要下載的文件,然后點擊下載,文件將會下載到本機上的指定文件夾下,將服務(wù)器上的文件下載至本機。下圖3-4為下載模塊流程圖。選擇要下載的文件繼續(xù)選擇需要下載的文件選定需要下載的文件夾指定文件夾下有下載的文件點擊下載是下載時可以暫停、繼續(xù)和刪除文件 否下載是否成功指定文件夾下沒有下載的文件圖3-4 下載模塊流程圖4 FTP軟件設(shè)計與實現(xiàn)4.1軟件總體設(shè)計與分析 根據(jù)需求分析,按照系統(tǒng)開發(fā)的基本觀點對功能進行分解,從功能上可對模塊作如下劃分:連接管理模塊:主要完成主機與服務(wù)器之間的連接操作。文件管理模塊:主要完成目錄的選擇,選擇文件等。文件傳輸模塊:主要完成主機與服務(wù)器連接成功后文件的上傳與下載。傳輸控制模塊:主要進行文件傳輸過程中的暫停、繼續(xù)和刪除。4.2主要模塊具體設(shè)計 4.2.1 連接管理設(shè)計 客戶端與服務(wù)器連接 FTP是建立在TCP之上的連接,端口號使用21。若客戶端與服務(wù)器之間成功連接, 服務(wù)器將返回字符串,如:220 GMS (Version 5.0)。前三個字符220表示客戶端與服務(wù)器成功連接,后面的字符會因服務(wù)器的不同而不同,但我們只關(guān)心前三個字符。 用戶名和密碼認證 客戶端發(fā)送用戶名給服務(wù)器,如:USER he,如果服務(wù)器找到用戶名he,將返回字符串, 如:331 User name okay, need password。接著客戶端應(yīng)發(fā)送密碼給服務(wù)器,如:PASS 123,密碼正確,返回:230 User logged in, proceed,如果用戶名或密碼認證沒有通過,返回如: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è)計文件管理設(shè)計主要是完成文件選擇和顯示。使用戶根據(jù)自己的不同需要選擇不同的文件夾,進行文件的上傳與下載。其主要程序如下:void CSortListCtrl:OnDblclk(NMHDR* pNMHDR, LRESULT* pResult) int nItem = GetSelectionMark();if (nItem != -1) if (m_nListType=0)/進入本地系統(tǒng)子目錄 /判斷是否為目錄int nFlag =GetItemData(nItem);if (nFlag=1) /獲取完整的目錄信息CString csFoder = GetItemText(nItem,0);csFoder += ;/獲取目錄 m_CurDir += csFoder; DisplayPath(m_CurDir);else/進入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è)計該模塊主要進行文件的上傳與下載。這里主要應(yīng)用了多線程的斷點續(xù)傳。多線程下載的原理是這樣的:通常服務(wù)器同時與多個用戶連接,用戶之間共享帶寬。如果N個用戶的優(yōu)先級都相同,那么每個用戶連接到該服務(wù)器上的實際帶寬就是服務(wù)器帶寬的N分之一??梢韵胂螅绻脩魯?shù)目較多,則每個用戶只能占有可憐的一點帶寬。如果你通過多個線程與服務(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)/當前選擇的是文件 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è)置初始標記 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)機操作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)/當前選擇的是文件 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è)置初始標記 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)機操作return 0; 4.2.4 傳輸控制設(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功能運行測試 在Windows7中開啟系統(tǒng)自帶FTP服務(wù)器的操作過程具體如下:首先打開控制面板,點擊系統(tǒng)與安全,再點擊管理工具,找到Internet信息服務(wù)(IIS)管理器,如下圖5-1所示: 圖5-1 Internet信息服務(wù)(IIS)管理器 雙擊打開Internet信息服務(wù)(IIS)管理器,右擊網(wǎng)站,再點擊添加FTP站點,如下圖5-2所示:圖5-2 添加FTP站點 FTP站點添加的具體操作:先輸入FTP站點名稱,再輸入物理路徑,接著輸入IP地址和身份驗證。如下圖5-3,圖5-4所示:圖5-3 FTP站點名稱 圖5-4 FTP站點中的IP地址和身份驗證為了驗證程序是否能正常運行,我選擇連接IP為35的FTP服務(wù)器來測試。首先是服務(wù)器連接的驗證:在服務(wù)器地址中輸35,在用戶名中輸入王旭,在密碼欄中輸入0509,點擊快速登錄按鈕后,結(jié)果如下圖5-5所示:圖5-5 FTP客戶端接下來是上傳功能的驗證:在左側(cè)的本地信息選擇自己想要上傳信息的磁盤,然后在該磁盤下選擇文件,單擊文件,點擊上傳,則文件開始上傳。如圖5-6,圖5-7所示:圖5-6 文件選擇圖5-7 文件上傳 最后是下載程序的驗證:在服務(wù)器文件列表中,選中自己想要下載的文件,選中自己想要下載文件的存儲目錄,點擊下載,文件則開始下載。具體操作如下圖5-8,圖5-9,圖5-10所示:圖5-8 下載文件存儲目錄選擇圖5-9 文件選擇圖5-10 文件下載在上傳和下載過程中進行文件的暫停、繼續(xù)與刪除。如下圖5-11,圖5-12,圖5-13所示:圖5-11 下載中暫停圖5-12 暫停后再繼續(xù)上傳圖5-13 下載中文件刪除6結(jié)論 FTP的主要作用,就是讓用戶連接上一個遠程計算機(這些計算機上運行著FTP服務(wù)器程序)察看遠程計算機有哪些文件,然后把文件從遠程計算機上下載到本地計算機,或把本地計算機的文件上傳到遠程計算機,而FTP客戶端則實現(xiàn)了用戶方便連接和訪問FTP服務(wù)器的功能。此次FTP客戶端的設(shè)計,分析了FTP協(xié)議的工作原理和FTP的數(shù)據(jù)傳輸原理,利用C+語言進行了程序的設(shè)計,并在visual studio2010軟件下進行調(diào)試,實現(xiàn)了FTP客戶端的基本功能。該客戶端能夠使用戶可以根據(jù)自己的需要選擇不同磁盤下的文件進行上傳與下載,并且在上傳和下載過程中用戶可以暫停文件,也可以刪除文件,完成了基本的FTP軟件功能。通過這次畢業(yè)設(shè)計的制作,我了解了C+語言的使用和功能,也對FTP的工作協(xié)議有了一定的了解,學(xué)會了FTP客戶端的使用。參考文獻1 馮博琴, 陳文革. 計算機網(wǎng)絡(luò)(第二版)M. 北京: 高等教育出版社, 2008: 103-1062 馮博琴. 計算機網(wǎng)絡(luò)實驗教程M. 北京: 高等教育出版社, 2005: 15-203 鄭毛祥, 程新麗. 計算機網(wǎng)絡(luò)M. 武漢: 華中科技大學(xué)出版社, 2014: 42-444 尹向東. 計算機網(wǎng)絡(luò)實驗實訓(xùn)教程M. 西安: 西安電子科技大學(xué)出版社, 2014: 65-785 鄭阿奇. Visual C+網(wǎng)絡(luò)編程教程(Visual Studio 2010)M. 北京: 電子工業(yè)出版社, 2013: 130-1606 葉新銘. 計算機網(wǎng)絡(luò)M. 北京: 機械工業(yè)出版社, 2001: 242-2837 謝希仁. 計算機網(wǎng)絡(luò)(第五版)M. 北京: 電子工業(yè)出版社, 2008: 150-1608 葉俊民. 軟件工程(第二版)M. 北京: 清華大學(xué)出版社, 2006: 51-739 周舸. 計算機網(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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- ××超市資源調(diào)配規(guī)定
- 多方合作基金投資協(xié)議
- 實習(xí)經(jīng)歷及工作表現(xiàn)證明(5篇)
- 關(guān)于勤奮學(xué)習(xí)的討論話題展開論述議論文創(chuàng)作12篇
- 人工智能技術(shù)研發(fā)經(jīng)歷證明書(6篇)
- 2025年物業(yè)管理師職業(yè)能力測試卷:智慧社區(qū)管理案例分析試題
- 2025年金屬硫蛋白(MT)、高純度MT、MT多糖項目提案報告
- 2025年電工(高級)職業(yè)技能鑒定實操試卷:電力系統(tǒng)節(jié)能技術(shù)考核
- 2025年自動驅(qū)鳥設(shè)備項目規(guī)劃申請報告
- 國際貿(mào)易合同執(zhí)行及業(yè)務(wù)經(jīng)歷證明書(7篇)
- 大學(xué)語文試題及答案4
- 發(fā)電廠2×150MW循環(huán)流化床空冷機組工程施工主要技術(shù)方案
- 移動寬帶營銷培訓(xùn)
- 2025年二級建造師礦業(yè)工程考試真題及答案
- 2025年上半年湖北恩施州事業(yè)單位統(tǒng)一考試公開招聘278人易考易錯模擬試題(共500題)試卷后附參考答案
- 甘肅省蘭州市(2024年-2025年小學(xué)六年級語文)統(tǒng)編版小升初真題((上下)學(xué)期)試卷及答案
- 熱力行業(yè)安全培訓(xùn)課件
- 臨床常用降壓藥物
- 公交駕駛員職業(yè)病健康講座
- 教師培訓(xùn)課件:關(guān)于教師的專業(yè)發(fā)展
- 感染性休克指南解讀
評論
0/150
提交評論