網(wǎng)絡(luò)與信息安全實(shí)驗(yàn)報(bào)告_第1頁(yè)
網(wǎng)絡(luò)與信息安全實(shí)驗(yàn)報(bào)告_第2頁(yè)
網(wǎng)絡(luò)與信息安全實(shí)驗(yàn)報(bào)告_第3頁(yè)
網(wǎng)絡(luò)與信息安全實(shí)驗(yàn)報(bào)告_第4頁(yè)
網(wǎng)絡(luò)與信息安全實(shí)驗(yàn)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩9頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

./目錄1緒論21.1研究背景21.2主要工作22相關(guān)知識(shí)介紹22.1FTP工作原理22.2FTP工作模式32.3FTP傳輸模式42.3.1ASCII傳輸方式52.3.2二進(jìn)制傳輸方式53FTP客戶端的設(shè)計(jì)53.1設(shè)計(jì)目的及工具選擇53.1.1設(shè)計(jì)目的53.1.2設(shè)計(jì)工具53.2客戶端主要模塊設(shè)計(jì)63.2.1客戶端連接模塊63.2.2上傳模塊83.2.3下載模塊114調(diào)試與操作說(shuō)明154.1運(yùn)行方法154.2運(yùn)行結(jié)果155課程設(shè)計(jì)總結(jié)17參考文獻(xiàn)17FTP客戶端的設(shè)計(jì)與實(shí)現(xiàn)FTP是Internet上用來(lái)傳送文件的協(xié)議。它是為了我們能夠在Internet上互相傳送文件而制定的文件傳送標(biāo)準(zhǔn),規(guī)定了Internet上文件如何傳送。通過(guò)FTP協(xié)議,我們就可以跟Internet上的FTP服務(wù)器進(jìn)行文件的上傳或下載。本文以實(shí)現(xiàn)一個(gè)簡(jiǎn)單易用的FTP客戶端為目標(biāo),通過(guò)分析FTP協(xié)議的基本工作原理和FTP的數(shù)據(jù)傳輸原理,研究如何使用C++工具對(duì)FTP客戶端進(jìn)行設(shè)計(jì),選擇C++來(lái)實(shí)現(xiàn)FTP客戶端程序的上傳下載等主要功能,并用相應(yīng)軟件提供的一個(gè)支持可視化編程的開(kāi)發(fā)環(huán)境,從而實(shí)現(xiàn)了對(duì)FTP客戶端的實(shí)現(xiàn)。1緒論1.1研究背景FTP是Internet上最早也是最廣的應(yīng)用,直到今天它仍是最重要和最基本的應(yīng)用之一。用FTP將信息下載到本地是一件十分普遍的事。也隨之出現(xiàn)了許多下載軟件。盡管遠(yuǎn)程登錄〔Telnet提供了訪問(wèn)遠(yuǎn)程文件的極好方法,但怎么也比不上使用自己計(jì)算機(jī)中的文件方便。如果用戶想使用其它計(jì)算機(jī)上的文件,最理想的方法就是把它COPY到自己的計(jì)算機(jī)中,以便在本地計(jì)算機(jī)上操作。FTP正是完成這項(xiàng)工作的工具,你可以在任意一個(gè)經(jīng)過(guò)文件傳輸協(xié)議〔FTP訪問(wèn)的公共有效的聯(lián)機(jī)數(shù)據(jù)庫(kù)或文檔中找到你想要的任何東西。全世界現(xiàn)在已有1000多個(gè)〔96年的數(shù)據(jù)FTP文件服務(wù)器對(duì)所有INTERNET用戶開(kāi)使用,用戶可以通過(guò)與Internet相連到遠(yuǎn)程計(jì)算機(jī),把自己需要的文件傳輸過(guò)來(lái)或是把自己的收集傳輸上去與他人共享。傳統(tǒng)的數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)采用的是客戶機(jī)/服務(wù)器<Client/Server>模式,有高度的交互性,高效的用戶界面等優(yōu)點(diǎn)1.2主要工作通過(guò)客戶端可以實(shí)現(xiàn)文件的上傳和下載。其促進(jìn)文件的共享〔計(jì)算機(jī)程序或數(shù)據(jù)、鼓勵(lì)間接或者隱式的使用遠(yuǎn)程計(jì)算機(jī)、向用戶屏蔽不同主機(jī)中各種文件存儲(chǔ)系統(tǒng)的細(xì)節(jié)和可靠和高效的傳輸數(shù)據(jù)。2相關(guān)知識(shí)介紹2.1FTP工作原理FTP〔FileTransferProtocol,是文件傳輸協(xié)議的簡(jiǎn)稱。用于Internet上的控制文件的雙向傳輸。同時(shí),它也是一個(gè)應(yīng)用程序。用戶可以通過(guò)它把自己機(jī)器與世界各地所有運(yùn)FTP協(xié)議的服務(wù)器相連,訪問(wèn)服務(wù)器上的資源和信息。FTP協(xié)議在TCP/IP協(xié)議棧中的位置如表1:表1TCP/IP協(xié)議棧HTTPFTPTELNSMTPDNSTFTPNMP應(yīng)用層TCPUDP傳輸層IP互聯(lián)網(wǎng)絡(luò)層X(jué)25ISDNLANWLANFDDIATM網(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ī)中。FTP采用"客戶端/服務(wù)器"方式,用戶要在自己的本地計(jì)算機(jī)上安裝FTP客戶端程序。從根本上說(shuō),FTP協(xié)議就是在網(wǎng)絡(luò)中各種不同的計(jì)算機(jī)之間按照TCP/IP協(xié)議來(lái)傳輸文件。FTP協(xié)議采用客戶端/服務(wù)器<Client/Sever>模式,由FTP客戶端程序和FTP服務(wù)器端程序組成。使用時(shí),先啟動(dòng)FTP客戶端程序與遠(yuǎn)程主機(jī)建立連接,然后向遠(yuǎn)程主機(jī)發(fā)出傳輸命令,遠(yuǎn)程主機(jī)在收到命令后就給予響應(yīng),并執(zhí)行正確的命令。但是FTP有一個(gè)根本的限制,那就是,如果用戶在某個(gè)主機(jī)上沒(méi)有注冊(cè)獲得授權(quán),即沒(méi)有用戶名和口令,就不能與該主機(jī)進(jìn)行文件傳輸。但匿名FTP服務(wù)器除外,它能夠使用戶與遠(yuǎn)程主機(jī)建立連接并以匿名身份從遠(yuǎn)程主機(jī)上拷貝文件,而不必是該遠(yuǎn)程主機(jī)的注冊(cè)用戶。用戶使用特殊的用戶名"Anonymous"或"guest"就可有限制地訪問(wèn)遠(yuǎn)程主機(jī)上公開(kāi)的文件?,F(xiàn)在許多系統(tǒng)要求用戶將Emai1地址作為口令,以便更好地對(duì)訪問(wèn)者進(jìn)行跟綜。出于安全的目的,大部分匿名FTP主機(jī)一般只允許遠(yuǎn)程用戶下載文件,而不允許上載文件。也就是說(shuō),用戶只能從匿名FTP主機(jī)拷貝其需要的文件而不能把文件拷貝到匿名FTP主機(jī)。另外,匿名FTP主機(jī)還采用了其他一些保護(hù)措施以保護(hù)自己的文件不至于被用戶修改和刪除,并防止計(jì)算機(jī)病毒的侵入。匿名FTP一直是Internet上獲取信息資源的最主要方式,在Internet成千上萬(wàn)的匿名FTP主機(jī)中存儲(chǔ)著無(wú)以計(jì)數(shù)的文件,這些文件包含了各種各樣的信息、數(shù)據(jù)和軟件。人們只要知道特定信息資源的主機(jī)地址,就可以用匿名FTP登陸。2.2FTP工作模式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ù)傳遞,如文件的上載、下載等。至于非標(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)端口。下表是幾個(gè)著名的TCP端口號(hào):表2TCP端口號(hào)TCP端口號(hào)關(guān)鍵字描述20FTP-DATA文件傳輸協(xié)議數(shù)據(jù)21FTP文件傳輸協(xié)議控制23TELENET遠(yuǎn)程登錄協(xié)議25SMTP簡(jiǎn)單傳輸協(xié)議53DOMAIN域名服務(wù)器80HTTP超文本傳輸協(xié)議110POP3郵局協(xié)議119NNTP新聞傳送協(xié)議FTP中字節(jié)大小有兩個(gè):邏輯字節(jié)大小和用于傳輸?shù)淖止?jié)大小。后者通常是8位,而前者可不一定是多少了。傳輸字節(jié)不必等于邏輯字節(jié)大小,也不必對(duì)數(shù)據(jù)結(jié)構(gòu)進(jìn)行解釋。控制連接是建立在USER-PIT和SERVER-PI之間用于交換命令與應(yīng)答的通信鏈路。數(shù)據(jù)連接是傳輸數(shù)據(jù)的全雙工連接,傳輸數(shù)據(jù)可以發(fā)生在服務(wù)器DTP和用戶DTP之間也可以發(fā)生在兩個(gè)服務(wù)器DTP之間,FTP可以傳輸非連續(xù)的文件,這些文件的一部分稱為頁(yè)。服務(wù)器DTP代表一種傳輸過(guò)程,它通常處于"主動(dòng)"狀態(tài),它和偵聽(tīng)端口建立數(shù)據(jù)連接,它還可以為傳輸和存儲(chǔ)設(shè)置參數(shù),并根據(jù)PI的指令傳輸數(shù)據(jù)。當(dāng)然,DTP也可以轉(zhuǎn)入"被動(dòng)"狀態(tài)。服務(wù)器FTP進(jìn)程,它是和用戶FTP進(jìn)程一起工作的,它由PI和DTP組成。在開(kāi)始階段,標(biāo)準(zhǔn)FTP命令由用戶PI產(chǎn)生并通過(guò)控制連接傳送到服務(wù)器進(jìn)程。服務(wù)器PI向用戶PI返回標(biāo)準(zhǔn)應(yīng)答。FTP命令指定數(shù)據(jù)連接參數(shù)和文件系統(tǒng)操作。用戶DTP在特定數(shù)據(jù)端口偵聽(tīng),服務(wù)器開(kāi)始數(shù)據(jù)連接并以指定的參數(shù)開(kāi)始數(shù)據(jù)傳輸。數(shù)據(jù)端口不必在開(kāi)始FTP命令的機(jī)器上,但用戶或用戶FTP進(jìn)程必須確定它在指定的數(shù)據(jù)端口上偵聽(tīng).這個(gè)數(shù)據(jù)連接是全雙工的。2.3FTP傳輸模式FTP協(xié)議的任務(wù)是從一臺(tái)計(jì)算機(jī)將文件傳送到另一臺(tái)計(jì)算機(jī),它與這兩臺(tái)計(jì)算機(jī)所處的位置、聯(lián)接的方式、甚至是是否使用相同的操作系統(tǒng)無(wú)關(guān)。假設(shè)兩臺(tái)計(jì)算機(jī)通過(guò)ftp協(xié)議對(duì)話,并且能訪問(wèn)Internet,你可以用ftp命令來(lái)傳輸文件。每種操作系統(tǒng)使用上有某一些細(xì)微差別,但是每種協(xié)議基本的命令結(jié)構(gòu)是相同的。FTP的傳輸有兩種方式:ASCII傳輸模式和二進(jìn)制數(shù)據(jù)傳輸模式。2.3.1ASCII傳輸方式假定用戶正在拷貝的文件包含的簡(jiǎn)單ASCII碼文本,如果在遠(yuǎn)程機(jī)器上運(yùn)行的不是UNIX,當(dāng)文件傳輸時(shí)ftp通常會(huì)自動(dòng)地調(diào)整文件的容以便于把文件解釋成另外那臺(tái)計(jì)算機(jī)存儲(chǔ)文本文件的格式。但是常常有這樣的情況,用戶正在傳輸?shù)奈募牟皇俏谋疚募?它們可能是程序,數(shù)據(jù)庫(kù),字處理文件或者壓縮文件〔盡管字處理文件包含的大部分是文本,其中也包含有指示頁(yè)尺寸,字庫(kù)等信息的非打印字符。在拷貝任何非文本文件之前,用binary命令告訴ftp逐字拷貝,不要對(duì)這些文件進(jìn)行處理。二進(jìn)制傳輸方式在二進(jìn)制傳輸中,保存文件的位序,以便原始和拷貝的是逐位一一對(duì)應(yīng)的。即使目的地機(jī)器上包含位序列的文件是沒(méi)意義的。例如,macintosh以二進(jìn)制方式傳送可執(zhí)行文件到Windows系統(tǒng),在對(duì)方系統(tǒng)上,此文件不能執(zhí)行。如果你在ASCII方式下傳輸二進(jìn)制文件,即使不需要也仍會(huì)轉(zhuǎn)譯。這會(huì)使傳輸稍微變慢,也會(huì)損壞數(shù)據(jù),使文件變得不能用。3FTP客戶端的設(shè)計(jì)3.1設(shè)計(jì)目的及工具選擇設(shè)計(jì)目的FTP早已應(yīng)用在網(wǎng)絡(luò)的各個(gè)方面,比如我們?cè)谠L問(wèn)網(wǎng)絡(luò)上的資源時(shí),經(jīng)常會(huì)遇到需要連接FTP服務(wù)器來(lái)下載,或者你制作了一個(gè),想要將其上傳至服務(wù)器,讓大家能夠訪問(wèn)它,這個(gè)時(shí)候就會(huì)用到FTP客戶端。雖然平時(shí)使用windows自帶的IE瀏覽器即可實(shí)現(xiàn)對(duì)FTP服務(wù)器的訪問(wèn),但是IE只是個(gè)很粗糙的FTP客戶端。IE瀏覽器在6.0以下的版本不支持PASV方式訪問(wèn)服務(wù)器,而且IE瀏覽器在登錄FTP服務(wù)器的時(shí)候,無(wú)法查看返回的信息,在出錯(cuò)的時(shí)候,無(wú)法找到錯(cuò)誤的原因,因此在使用上很不方便?,F(xiàn)在大多數(shù)的FTP客戶端軟件都是收費(fèi)版的,而且以英文版居多,使用上操作很復(fù)雜,目前流行的有CoreFtp、AceFtp、FtpVoyager等,但是大多數(shù)用戶并不習(xí)慣使用這些軟件。本文所設(shè)計(jì)的FTP客戶端則適合大多數(shù)用戶使用,界面設(shè)計(jì)的很簡(jiǎn)單,使用戶可以一目了然,而且具備FTP客戶端的基本功能,可以作為下載、上傳文件的工具來(lái)使用。設(shè)計(jì)工具程序設(shè)計(jì)中用到的主要工具就是VC++6.0開(kāi)發(fā)平臺(tái),EasyFZSFTP服務(wù)器3.2客戶端主要模塊設(shè)計(jì)客戶端連接模塊運(yùn)行客戶端后,首先是連接服務(wù)器,需要輸入服務(wù)器IP地址,用戶名和密碼,然后點(diǎn)擊查詢,觀察是否連接成功,若成功則顯示遠(yuǎn)程文件的列表。若連接失敗,則拋出異常,彈出對(duì)話框顯示出錯(cuò)誤,可知如何修改,然后重新輸入服務(wù)器IP地址或用戶名或密碼,直到連接上服務(wù)器。下圖為客戶端連接流程圖:查詢查詢服務(wù)器判斷在顯示目錄文件列表顯示文件進(jìn)行錯(cuò)誤處理用戶輸入服務(wù)器地址及用戶名和密碼是否圖3-1客戶端連接流程圖主要代碼:在OnInitDialog<>函數(shù)中添加成員變量的初始化代碼,對(duì)服務(wù)器名、登錄用戶名和登錄口令的控件變量賦初值:BOOLCFTP14Dlg::OnInitDialog<>{……//前面是MFC應(yīng)用程序向?qū)Ш皖愊驅(qū)ё詣?dòng)生成的代碼 //TODO:Addextrainitializationhere m_strFtp=_T<"">; //初始化服務(wù)器域名 m_strName=_T<"">; //初始化登錄用戶名 m_strPwd=_T<"">; //初始化登錄口令 UpdateData<FALSE>; //更新界面 returnTRUE; //returnTRUEunlessyousetthefocustoacontrol}當(dāng)用戶點(diǎn)擊'查詢'按鈕,執(zhí)行此函數(shù)OnQuery〔,代碼如下:voidCFTP14Dlg::OnQuery<>{CInternetSession*pSession;//定義會(huì)話對(duì)象指針變量 CFtpConnection*pConnection;//定義連接對(duì)象指針變量 CFtpFileFind*pFileFind;//定義文件查詢對(duì)象指針變量 CStringstrFileName; BOOLbContinue; pConnection=NULL;//初始化 pFileFind=NULL; UpdateData<TRUE>;//獲得用戶的當(dāng)前輸入〔服務(wù)器名,用戶名和口令 while<m_listFile.GetCount<>!=0>m_listFile.DeleteString<0>;//清除列表框的容 pSession=newCInternetSession<//創(chuàng)建Internet會(huì)話類對(duì)象 AfxGetAppName<>,1,PRE_CONFIG_INTERNET_ACCESS>; try {//試圖建立與指定FTP服務(wù)器的連接 pConnection= pSession->GetFtpConnection<m_strFtp,m_strName,m_strPwd>; }catch<CInternetException*e>{ e->Delete<>;//無(wú)法建立連接,進(jìn)行錯(cuò)誤處理 pConnection=NULL; } if<pConnection!=NULL> { //創(chuàng)建CFtpFileFind對(duì)象,向構(gòu)造函數(shù)傳遞CFtpConnection對(duì)象的指針 pFileFind=newCFtpFileFind<pConnection>; bContinue=pFileFind->FindFile<"*">;//查找服務(wù)器上當(dāng)前目錄的任意文件 if<!bContinue>//如果一個(gè)文件都找不到,結(jié)束查找 { pFileFind->Close<>; pFileFind=NULL; } while<bContinue>//找到了第一個(gè)文件,繼續(xù)找其它的文件 { strFileName=pFileFind->GetFileName<>;//獲得找到的文件的文件名 //如果找到的是否目錄,將目錄名放在括弧中 if<pFileFind->IsDirectory<>>strFileName="["+strFileName+"]"; //將找到的文件或目錄名顯示在列表框中。 m_listFile.AddString<strFileName>; bContinue=pFileFind->FindNextFile<>;//查找下一個(gè)文件 } if<pFileFind!=NULL> { pFileFind->Close<>;//結(jié)束查詢 pFileFind=NULL; } } deletepFileFind;//刪除文件查詢對(duì)象 if<pConnection!=NULL> { pConnection->Close<>; deletepConnection;//刪除FTP連接對(duì)象 } deletepSession;//刪除Internet會(huì)話對(duì)象}上傳模塊用戶在連接上服務(wù)器后,可以在本地列表中選擇需要上傳的文件,并指定上傳位置,將本機(jī)上的文件上傳至FTP服務(wù)器。不能選擇文件夾,只能選擇文件。若上傳失敗,則拋出異常;如果成功上傳,則提示上傳成功。圖為上傳子模塊流程圖:點(diǎn)擊上傳按鈕點(diǎn)擊上傳按鈕彈出文件選擇對(duì)話框選擇需要上傳的文件判斷是否彈出文本框顯示上傳成功彈出文本框顯示上傳失敗圖3-2上傳模塊流程圖上傳模塊的主要代碼為:voidCFTP14Dlg::OnUpload<>{ //獲得當(dāng)前輸入 UpdateData<TRUE>; //禁用用于輸入的文本框控件 m_editFtp.EnableWindow<FALSE>;//服務(wù)器域名輸入文本框 m_editName.EnableWindow<FALSE>;//登錄客戶名輸入文本框 m_editPwd.EnableWindow<FALSE>;//口令輸入文本框 m_staFtp.EnableWindow<FALSE>; m_staName.EnableWindow<FALSE>; m_staPwd.EnableWindow<FALSE>; //禁用查詢按鈕 m_btnQuery.EnableWindow<FALSE>; CStringstrSourceName; CStringstrDestName; CFileDialogdlg<TRUE,"","*.*">;//定義文本對(duì)話框?qū)ο笞兞?if<dlg.DoModal<>==IDOK> { //獲得待上傳的本地機(jī)文件路徑和文件名 strSourceName=dlg.GetPathName<>; strDestName=dlg.GetFileName<>; //調(diào)用Upload函數(shù)上傳文件 if<Upload<strSourceName,strDestName>> AfxMessageBox<"上傳成功!",MB_OK|MB_ICONINFORMATION>; else AfxMessageBox<"上傳失??!",MB_OK|MB_ICONSTOP>; }else{ //文件選擇有錯(cuò)誤 AfxMessageBox<"請(qǐng)選擇文件!",MB_OK|MB_ICONSTOP>; } //激活查詢按鈕 m_btnQuery.EnableWindow<TRUE>; //激活用于輸入的文本框控件 m_editFtp.EnableWindow<TRUE>; m_editName.EnableWindow<TRUE>; m_editPwd.EnableWindow<TRUE>; m_staFtp.EnableWindow<TRUE>; m_staName.EnableWindow<TRUE>; m_staPwd.EnableWindow<TRUE>;}BOOLCFTP14Dlg::Upload<CStringstrSName,CStringstrDName>{CInternetSession*pSession; CFtpConnection*pConnection; pConnection=NULL; //創(chuàng)建Internet會(huì)話 pSession=newCInternetSession< AfxGetAppName<>,1, PRE_CONFIG_INTERNET_ACCESS>; try{ //建立FTP連接 pConnection=pSession->GetFtpConnection< m_strFtp, m_strName,m_strPwd>;} catch<CInternetException*e> {//錯(cuò)誤處理 e->Delete<>; pConnection=NULL; returnFALSE;} if<pConnection!=NULL> {//上傳文件 if<!pConnection->PutFile<strSName,strDName>> {//上傳文件錯(cuò)誤 pConnection->Close<>; deletepConnection; deletepSession; returnFALSE;}} //清除對(duì)象 if<pConnection!=NULL> {pConnection->Close<>; deletepConnection;} deletepSession; returnTRUE;}下載模塊當(dāng)用戶在服務(wù)器文件列表中選擇想要下載的文件后,選擇需要下載文件在本機(jī)上的存儲(chǔ)位置,設(shè)置上傳模式為被動(dòng)模式;將服務(wù)器上的文件下載至本機(jī),如果成功下載,則提示下載成功,若失敗則拋出異常,此過(guò)程可連續(xù)進(jìn)行直到想退出。下圖為下載子模塊流程圖:選擇要下載的文件選擇要下載的文件點(diǎn)擊下載按鈕命名文件名及文件類型彈出文本框顯示下載成功彈出文本框顯示下載失敗下載文件是否成功選擇文件在本機(jī)存儲(chǔ)位置是否圖3-2下載模塊流程圖下載模塊的主要代碼:voidCFTP14Dlg::OnDownload<>{//獲得當(dāng)前輸入 UpdateData<TRUE>; intnSel=m_listFile.GetCurSel<>; CStringstrSourceName; //獲得用戶在列表框中的選擇 nSel=m_listFile.GetCurSel<>; m_listFile.GetText<nSel,strSourceName>; if<strSourceName.GetAt<0>!='['> {//選擇的是文件 CStringstrDestName; CFileDialogdlg<FALSE,"","*.*">;//定義了一個(gè)文件對(duì)話框?qū)ο笞兞? if<dlg.DoModal<>==IDOK>//激活文件對(duì)話框 {//獲得下載文件在本地機(jī)上存儲(chǔ)的路徑和名稱 strDestName=dlg.GetPathName<>; //調(diào)用函數(shù)下載文件 if<Download<strSourceName,strDestName>> AfxMessageBox<"下載成功!",MB_OK|MB_ICONINFORMATION>; else AfxMessageBox<"下載失??!",MB_OK|MB_ICONSTOP>; }else{ AfxMessageBox<"請(qǐng)寫入文件名!",MB_OK|MB_ICONSTOP>; } }else{ //選擇的是目錄 AfxMessageBox<"不能下載目錄!\n請(qǐng)重選!",MB_OK|MB_ICONSTOP>; } //禁用下載按鈕 m_btnDownload.EnableWindow<FALSE>; //激活查詢和上傳按鈕 m_btnUpload.EnableWindow<TRUE>; m_btnQuery.EnableWindow<TRUE>; //激活用來(lái)輸入的文本和編輯框控件 m_editFtp.EnableWindow<TRUE>; m_editName.EnableWindow<TRUE>; m_editPwd.EnableWindow<TRUE>; m_staFtp.EnableWindow<TRUE>; m_staName.EnableWindow<TRUE>; m_staPwd.EnableWindow<TRUE>; }BOOLCFTP14Dlg::Download<CStringstrSName,CStringstrDName>{CInternetSession*pSession;//定義會(huì)話對(duì)象變量指針 CFtpConnection*pConnection;//定義連接對(duì)象變量指針 pConnection=NULL; //創(chuàng)建Internet會(huì)話對(duì)象 pSession=newCInternetSession<A

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論