ftp的構(gòu)建與實(shí)現(xiàn)論  文-無憂無慮畢設(shè)網(wǎng)_第1頁
ftp的構(gòu)建與實(shí)現(xiàn)論  文-無憂無慮畢設(shè)網(wǎng)_第2頁
ftp的構(gòu)建與實(shí)現(xiàn)論  文-無憂無慮畢設(shè)網(wǎng)_第3頁
ftp的構(gòu)建與實(shí)現(xiàn)論  文-無憂無慮畢設(shè)網(wǎng)_第4頁
ftp的構(gòu)建與實(shí)現(xiàn)論  文-無憂無慮畢設(shè)網(wǎng)_第5頁
已閱讀5頁,還剩69頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: 本文配套程序下載地址 : 無憂無慮畢設(shè)網(wǎng) ()-大學(xué)生畢業(yè)設(shè)計(jì)站 ,免費(fèi)畢業(yè)設(shè)計(jì)論文 ,無憂無慮畢設(shè)網(wǎng) 大學(xué)生畢業(yè)設(shè)計(jì) ,出售各類畢業(yè)設(shè)計(jì)源碼 ,論文 ,程序源碼 ,網(wǎng)站源碼 ,免費(fèi)視頻教程 ,我們將竭誠為您服務(wù)! 摘 要 進(jìn)入信息時(shí)代,隨著互聯(lián)網(wǎng)普及,只要接上網(wǎng)絡(luò),就能從網(wǎng)上找到龐大的數(shù)據(jù)資源,其內(nèi)容包羅萬象,可以說幾乎任何人都可以在Internet 資源中找到自己所需要的信息資源。 有了網(wǎng)絡(luò),使用者不但可以瀏覽各種各樣的信息資源,還能夠?qū)⒆约焊信d趣的資源下載到本地機(jī)上。由于網(wǎng)絡(luò)的帶寬及各種服務(wù)的限 制,單純從頁面上下載顯得又慢又不可靠,所以就有許多 FTP工具提供出來。 本軟件是用 DELPHI7.0 作為開發(fā)工具完成的,系統(tǒng)有著良好的界面,簡單易用,系統(tǒng)開發(fā)的總體任務(wù)是連接 FTP 服務(wù)器,上傳 /下載文件、對(duì) FTP 服務(wù)器站點(diǎn)的管理、服務(wù)器端提供 FTP 服務(wù)、允許遠(yuǎn)程登錄下載服務(wù)器上的文件。 本軟件的設(shè)計(jì),即從需求分析,軟件設(shè)計(jì)到軟件功能實(shí)現(xiàn),都始終遵循軟件工程的思想和數(shù)據(jù)庫的設(shè)計(jì)方法。在本文中采用了大量的圖表說明,使文章明確清晰,便與閱讀和理解。 關(guān)鍵詞: FTP , FTP 工具軟件, DELPHI 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: Abstract Enter the information centuries, along with the Internet universal, so long as connect with the net, you can find out the huge data resources from the Internet, its contents all inclusive, can say almost anyone can find out the information resources which you need in the Internet. Had the network, the user can browse various of information resources, can still download resources which you are interested in native from aboard. Because of the bandwidth of the network and the restrict of various service, the simplicity way seem to be slowly and not dependable up and down from the page, so there have many tools of FTP to provide out. This software completes with the DELPHI7.0 tools, the system has the good interface, using in brief and easily, the total mission of the system is to link the server of FTP, spreading up/ download documents, to the FTP server the management, server that station order carries to provide the service of FTP and allow the document of the long range logging download service machine. The design of this software, namely analytical from the need, the software designs the function to carry out, all following the thought of the software engineering and the design method of the databases always. This text had a great deal of chart elucidation, make the article definitely clear, then with read and comprehend easily. Key words FTP Tools of FTP software DELPHI 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: 目 錄 摘 要 . I Abstract . II 第 1 章 緒 論 . 1 1.1 課題背景 . 1 1.2 網(wǎng)絡(luò)基本概念 . 1 1.3 網(wǎng)絡(luò)概述 . 2 第 2 章 Delphi6 及相關(guān)技術(shù)簡介 . 3 2.1 Delphi6 簡介 . 3 2.2 FTP 協(xié)議簡介 . 3 2.2.1 什么是 FTP 協(xié)議? . 3 2.2.2 FTP 文件傳輸?shù)闹饕攸c(diǎn) . 4 2.2.3 FTP 支持的文件傳送類型 . 4 2.2.4 FTP 在實(shí)現(xiàn)網(wǎng)絡(luò)傳輸時(shí)提供的 3 種模式 . 4 2.3 FTP 在 Delphi6 的中的實(shí)現(xiàn) . 5 2.4 NMFTP 控件的介紹 . 5 2.4.1 常用屬性介紹 . 5 2.4.2 常用方法介紹 . 7 2.4.3 常用事件介紹 . 9 2.5 客戶機(jī) /服務(wù)器模式 . 11 2.5.1 什么是客戶機(jī) /服務(wù)器 . 11 2.5.2 如何采用客戶機(jī) /服務(wù)器模式 . 11 2.6 第三方控件的安裝與刪除 . 12 2.6.1 控件的安裝 . 13 2.6.2 控件的刪除 . 13 第 3 章 系統(tǒng)功能分析及界面設(shè)計(jì) . 14 3.1 系統(tǒng)功能分析 . 14 3.2 系統(tǒng)主界面設(shè)計(jì) . 16 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: 3.3 站點(diǎn)管理器窗體設(shè)計(jì) . 17 3.4 閃現(xiàn)窗體的設(shè)計(jì) . 18 第 4 章 系統(tǒng)主要功能實(shí)現(xiàn) . 19 4.1 閃現(xiàn)窗口的實(shí)現(xiàn)要點(diǎn) . 19 4.2 主窗體中各模塊的實(shí)現(xiàn) . 20 4.2.1 本地操作的實(shí)現(xiàn)要點(diǎn) . 20 4.2.2 站點(diǎn)管理器的實(shí)現(xiàn)要點(diǎn) . 24 4.2.3 FTP 服務(wù)器上的遠(yuǎn)程操作實(shí)現(xiàn)要點(diǎn) . 27 第 5 章 FTP 服務(wù)器端設(shè)計(jì)與應(yīng)用 . 29 5.1 常用的 FTP 端指令集 . 29 5.2 重要的有關(guān) FTP 的第三方控件包的介紹 . 29 5.2.1 常用屬性介紹 . 30 5.2.2 常用方法介紹 . 31 5.2.3 常用事件介紹 . 31 5.3 FTP 服務(wù)器的設(shè)計(jì) . 32 5.3.1 FTP 服務(wù)器界 面設(shè)計(jì) . 32 5.3.2 FTP 服務(wù)器功能的實(shí)現(xiàn) . 34 5.4 FTP 服務(wù)器端應(yīng)用擴(kuò)展分析 . 35 5.4.1 注冊(cè)自動(dòng)運(yùn)行的幾種方法 . 36 5.4.2 防止程序多次重復(fù)運(yùn)行 . 38 5.4.3 任務(wù)管理器中的隱形 . 39 5.4.4 可執(zhí)行文件的藏匿 . 41 結(jié) 論 . 43 致 謝 . 44 參 考 文 獻(xiàn) . 45 附錄 1 . 47 附錄 2 . 50 附錄 3 . 54 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: 第 1 章 緒 論 1.1 課題背景 現(xiàn)代科技給我們帶來了翻天覆地的變化,互聯(lián)網(wǎng)就是這諸多變化之一,而且它無時(shí)不刻地包圍著你。可以這樣說 , 21 世紀(jì)是互聯(lián)網(wǎng)的世紀(jì)?;ヂ?lián)網(wǎng)是人類科技發(fā)展史中成長最快的新鮮事物,從誕生到高度發(fā)展僅僅用了二十幾年,而未來的發(fā)展前景更是一片光明。每個(gè)人可能者已經(jīng)感覺到了它的發(fā)展,從大大小小的網(wǎng)絡(luò)公司到各種各樣的網(wǎng)上商店、書店、網(wǎng)吧、網(wǎng)上銀行等,就連電影院也都搬到了網(wǎng)上你可以足不出戶的欣賞美國大片。 早在 20 世紀(jì) 90 年代初, Internet 和 World Wide Web(簡稱 WWW)已經(jīng)被大家熟知。最近幾年, Internet 的發(fā)展更是神速,它已經(jīng)深深 觸 及 到 我 們 的 生 活 和 工 作 的 方 方 面 面 。 隨 著 許 多 新 興 技 術(shù) 在Internet 中 的推廣應(yīng)用,使用它的自身發(fā)展更日趨完善,它為用戶也帶來了越來多的實(shí)惠和便利。毫不夸張地說,無論你在世界上的哪個(gè)角落,只要通過互聯(lián)網(wǎng),你就可以同親人朋友、甚至是陌生人相互交流,而且形式多樣。互發(fā)郵件、交換文件、彼此聊天這已經(jīng)是很平常了,而現(xiàn)在隨著網(wǎng)絡(luò)、通信技術(shù)的相結(jié)合,已經(jīng)出現(xiàn)了可視電話、網(wǎng)絡(luò)家電、電子商務(wù)等。網(wǎng)絡(luò)用戶可以通過大大小小的各類網(wǎng)站或主頁。他們已經(jīng)越來越離不開網(wǎng)絡(luò),而且已經(jīng)把企業(yè)網(wǎng)絡(luò)建設(shè)納入了未來企業(yè)發(fā)展最重要的環(huán)節(jié)。是互聯(lián)網(wǎng)最大的凝聚力所在,它是一個(gè)包羅萬象的信息服務(wù)系統(tǒng)。 1.2 網(wǎng)絡(luò)基本概 念 互聯(lián)網(wǎng)通常指的是由很多計(jì)算機(jī)網(wǎng)絡(luò)(包括局域網(wǎng)、廣域網(wǎng)等)相互連接而成的一個(gè)總網(wǎng)絡(luò),它無論在功能上還是在邏輯上都是一無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: 個(gè)巨型網(wǎng)絡(luò)。無論 Internet、因特網(wǎng)、國際互聯(lián)網(wǎng)、互聯(lián)網(wǎng)、全球互聯(lián)網(wǎng)、交互網(wǎng)、國際電腦網(wǎng)絡(luò)、國際計(jì)算機(jī)網(wǎng)絡(luò)。其實(shí)它們都是由美國阿帕網(wǎng)( ARPANET)發(fā)展而成的。主要采用的通信協(xié)議都是TCP/IP 協(xié)議。 Internet 也就是網(wǎng)絡(luò)中心的網(wǎng)絡(luò)。那什么又是網(wǎng)絡(luò)呢?網(wǎng)絡(luò)與Internet 又有什么關(guān)系呢? 1.3 網(wǎng)絡(luò)概述 網(wǎng)絡(luò)的定義從概念上說,就是由兩臺(tái)或兩臺(tái)以上計(jì)算機(jī)通過一定的連接和統(tǒng)一的 通信協(xié)議,最終實(shí)現(xiàn)彼此之間相互通信的實(shí)體。網(wǎng)絡(luò)互聯(lián)可以采用網(wǎng)間連接器互連和通過互聯(lián)網(wǎng)兩種方式實(shí)現(xiàn)網(wǎng)絡(luò)互聯(lián)。從定義看,它必須是由多個(gè)電腦通過連接設(shè)備物理連接而成,然后通過定制的協(xié)議方法才能實(shí)現(xiàn)多種資源、服務(wù)、信息共享。這種通信包括了發(fā)送 E-mail 和傳真,交換一個(gè)或多個(gè)文件等。而Internet 是多個(gè)計(jì)算機(jī)網(wǎng)絡(luò)的集合,是一個(gè)網(wǎng)中網(wǎng),是遍布全球的聯(lián)絡(luò)各個(gè)計(jì)算機(jī)平臺(tái)的總連接,這些網(wǎng)中網(wǎng)的計(jì)算機(jī)少則兩三臺(tái),多的則擁有數(shù)千臺(tái),是名副其實(shí)的千萬信息資源的匯合。從本質(zhì)上講, Internet 是一個(gè)媒介,是一個(gè)溝通你我他,溝 通全世界的重要手段,只不過這種溝通連接世界上不同種類型的計(jì)算機(jī)實(shí)現(xiàn)的,通過這種連接,我們就能和世界交流,和世界通信,所以它又是一個(gè)交換各類數(shù)據(jù)的通信媒介。從 Internet 提供的無限資源和對(duì)人類的發(fā)展推動(dòng)作用這方面來理解, Internet 是正在迅猛發(fā)展的全球數(shù)字化數(shù)據(jù)庫,這個(gè)數(shù)據(jù)庫是建立在高度靈活的通信技術(shù)之上的,正是有了各種成熟的通信技術(shù)和網(wǎng)絡(luò)連接的簡單性、靈活性和共享信息的便利性才促成了 Internet 的飛速發(fā)展。 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: 第 2 章 Delphi6 及相關(guān)技術(shù)簡介 2.1 Delphi6 簡介 Delphi 是美國 Borland 公司推出的功能強(qiáng)大的應(yīng)用程序開發(fā)工具。它具有功能強(qiáng)大、運(yùn)行速度快、易于學(xué)習(xí)和使用以及開發(fā)效率高等特點(diǎn)。它是可視化應(yīng)用編程開發(fā)環(huán)境、可重用性面向?qū)ο缶幊陶Z言、快速編譯器和數(shù)據(jù)庫的完美結(jié)合。 Delphi6 發(fā)布于 2001 年 6 月。新版本的 Delphi6 開發(fā)功能更加強(qiáng)大,除了能夠有效幫助開發(fā)者個(gè)人或其開發(fā)團(tuán)隊(duì)快速建立 Windows應(yīng)用程序,快速簡化 Windows 與瀏覽器客戶、 Web 服務(wù)器、中間件以及后臺(tái)數(shù)據(jù)庫系統(tǒng) (XML|SOAPWSDLXSL 等 )的開發(fā)工具,同時(shí)也支持基于 Web 服務(wù)的 Microsoft.NET 和 Sun ONE,而且提供給 Web開發(fā)者需要的可伸縮性與可靠性。新的 Delphi6 框架中還包括了BizSnapWebSnap 和 DataSnap,用戶可以用它開發(fā)支持 Web 服務(wù)特性的服務(wù)器端和客戶端應(yīng)用,而這一切者是通過一套高度集成的可視化開發(fā)工具、先進(jìn)的編譯技術(shù)和可重用的組件完成的。特別是在電子 商務(wù) 愈加流行的今天,通過 Delphi 6,任何企業(yè)都能很快地轉(zhuǎn)移到未來基于 Web 服務(wù)的電子商務(wù)應(yīng)用程序開發(fā)上,而不用丟棄以往的開發(fā)方式、技巧和源代碼。可見,要?jiǎng)?chuàng)建一流的 Web 應(yīng)用程序 ,Delphi 6 無疑是目前的最佳選擇之一。 2.2 FTP 協(xié)議簡介 2.2.1 什么是 FTP 協(xié)議? FTP 協(xié)議即文件傳輸協(xié)議( File Transfer Protocol),它是TCP/IP 協(xié)議族的應(yīng)用協(xié)議之一,是 Internet 上使用非常廣泛的一種通信協(xié)議。它是由支持 Internet 文件傳輸?shù)母鞣N規(guī)則所組成的集合,這些規(guī)則使 Internet 用戶可以把文件從一個(gè)主機(jī)拷貝到別一個(gè)主機(jī)無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: 上。通過 TCP/IP 連接在一起的任何兩臺(tái)計(jì)算機(jī),如果安裝了 FTP 和服務(wù)器,就可以通過 FTP 服務(wù)進(jìn)行相互之間的文件傳輸,因而 為用戶提供了極大的方便和收益。 FTP 通常也表示用戶執(zhí)行這個(gè)協(xié)議所使用的應(yīng)用程序。 FTP 和其他的 Internet 服務(wù)一樣,亦采用客戶機(jī) /服務(wù)器方式。它要求用戶用本地的客戶端與服務(wù)器建立連接,然后才能從服務(wù)器上獲取文件( Download),或向服務(wù)器發(fā)送文件( Upload)。使用方法很簡單;啟動(dòng) FTP 程序先與主機(jī)連接,然后向遠(yuǎn)程主機(jī)發(fā)出傳輸命令,遠(yuǎn)程主機(jī)給予響應(yīng),執(zhí)行正確命令。 目前 Windows 操作系統(tǒng)最常用的 FTP 軟件有 WS-FTP,CUTEFTPT等。 FTP 有一個(gè)根本的限制,那就是:如果用戶未被某一服務(wù) 器授權(quán),未取得 User Name 和 Password 就不能訪問該主機(jī),實(shí)際上是不能遠(yuǎn)程登陸( Remote Login)進(jìn)入該主機(jī)。而 Anonymous FTP(匿名 FTP)則取消了這種限制。 2.2.2 FTP 文件傳輸?shù)闹饕攸c(diǎn) 用戶有合法的用戶名和口令的前提下才與服務(wù)器建立連接。通過客戶端軟件,用戶可以在權(quán)限允許的范圍內(nèi)進(jìn)行文件更名、刪除、或傳送操作。 2.2.3 FTP 支持的文件傳送類型 FTP 支持的文件傳送類型,它們是 ASCII 和二進(jìn)制映像。 ( 1) 文本文件( ASCII):在傳送文本文件時(shí)應(yīng)該使用 ASCII。在 ASCII 模式中,將執(zhí)行網(wǎng)絡(luò)標(biāo)準(zhǔn)字符轉(zhuǎn)換。例如,行尾的字符在必要時(shí)根據(jù)目標(biāo)操作系統(tǒng)進(jìn)行轉(zhuǎn)換。 ( 2)二進(jìn)制( Binary)文件的傳輸可執(zhí)行文件、圖像和壓縮文件等時(shí)應(yīng)該使用二進(jìn)制。在二進(jìn)制模式中,一個(gè)字節(jié)接一個(gè)字節(jié)地移動(dòng)文件。 2.2.4 FTP 在實(shí)現(xiàn)網(wǎng)絡(luò)傳輸時(shí)提供的 3 種模式 ( 1)流模式( Stream mode)。在這種模式下, FTP 將文件 作為一系列字節(jié)進(jìn)行處理,適用于任何數(shù)據(jù)類型。 FTP 針對(duì)不同的文件結(jié)構(gòu)指明文件的開始和結(jié)尾。 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: ( 2)塊模式( Block mode)。在這種模式下, FTP 將文件 作為大量塊傳輸,每一個(gè)塊前都有一個(gè)報(bào)頭,包含有塊的大小和描述符。所謂的描述符是用來確定該塊在整個(gè)文件中的位置,指明該塊是不是最后一塊,同時(shí),描述符還有一個(gè)位來描述數(shù)據(jù)是否可靠。 ( 3)壓縮模式( Compressed mode)。這種模式主要用于提高傳輸?shù)男剩苡行Ю镁W(wǎng)絡(luò)帶寬。 2.3 FTP 在 Delphi6 的中的實(shí)現(xiàn) 在 Delphi6.0 中實(shí)現(xiàn) FTP 的 3 種方法 要在 Delphi6.0 中實(shí)現(xiàn) FTP 的下載功能,有以下 3 種方法: ( 1)使用 Delphi6.0 的 FastNet 組件頁中的 TNMFTP 組件來實(shí)現(xiàn)文 件下載。 ( 2)使用 Active X 提供的 Microsoft Internet Transfer 組件。 ( 3)使用 Delphi6.0 提供的 WinInet 單元,其實(shí)質(zhì)是系統(tǒng)的 API函數(shù)。 2.4 NMFTP 控件的介紹 NMFTP 控件位于控件面板的 FastNet 單元中,主要用于封裝 FTP協(xié)議及其常用處理單元。圖 2-1 就是 Delphi6 控件面板中的 FastNet頁面,第 5 個(gè)控件就是 NMFTP。 圖 2-1 FastNet 控件面板 2.4.1 常用屬性介紹 單擊 NMFTP 控件后,會(huì)顯示 Object Inspector 對(duì)話框,同時(shí)默認(rèn)顯示多數(shù) Properties(屬性)的設(shè)置初始值,它主要是提供一些常用、便利的控件屬性設(shè)置,用于使該控件正常的動(dòng)作。具體面板無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: 如圖 2-2 所示 圖 2-2 NMFTP 控件的屬性面板 NMFTP 控件的屬性面板中主要包括下面一些屬性: About 屬性:主要是一些本控件的版權(quán)信息,主要用于知道本控件的一些注冊(cè)信息,如何升級(jí)和怎樣得到技術(shù)支持等。 FirewallType 屬性:主要用于設(shè)置防火墻類型。防火墻類型主要有三種 FTUser、 FtSite、 FtOpen。默認(rèn)值是 FTUser。 FWAuthenticate 屬性:用于設(shè)置在通過防火墻時(shí)是否需要身份認(rèn)證。默認(rèn)值是 False,當(dāng)其值為 True 時(shí),要求身份認(rèn)證;反之則不需要。 FWPassword 屬性:用于設(shè)置在通過防火墻時(shí)登錄所需的用戶口令。 FWUserID 屬性:用于用于設(shè)置在通過防火墻時(shí)登錄所需的用戶ID。 Host 屬性:主要用來指明本程序所要連接的遠(yuǎn)程主機(jī)的名稱或IP 地址。 Name 屬性: NMFTP 控件的類實(shí)體名字。 ParseList 屬性:用于決定是否把內(nèi)送的文檔列表羅列入屬性FTPDirectoryList 中;反之則不,如果需要處理 文檔列表,只能無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: 在 OnListItem 事件中進(jìn)行。 Passive 屬性:用于決定怎樣進(jìn)行 FTP 數(shù)據(jù)連接。默認(rèn)值是 False,當(dāng)其值為 False時(shí),將以 Port方法連接;當(dāng)值為 True 時(shí)則以 PASV方法連接。后者多用于 Proxy 中。 Password 屬性:當(dāng)用戶向 FTP 服務(wù)器按指定用戶 ID 登錄時(shí)用于設(shè)置指定的用戶口令。 Port 屬性:主要用來指明本程序所要連接的遠(yuǎn)程主機(jī)的端口號(hào)。在有些網(wǎng)絡(luò)服務(wù)中也用來指定遠(yuǎn)端服務(wù)軟件正在監(jiān)聽的端口號(hào)。 Proxy 屬性:主要用來指明本程序所要連接的代理服務(wù)器的名稱或 IP 地址。如果 該服務(wù)并不需要代理服務(wù)器設(shè)為空即可。 ProxyPort 屬性:主要用來指明本程序所要連接的代理服務(wù)器使用的端口號(hào)。 ReporLevel 屬性:主要用來當(dāng) Status 屬性設(shè)置和 OnStatus 事件觸發(fā)時(shí)控制報(bào)告的數(shù)目等級(jí)。 Tag 屬性:工具型輔助屬性,主要用于存儲(chǔ)附加的整型數(shù)據(jù)。 TimeOut 屬性:即超時(shí)屬性用于定義在 Socket 連接過程中用于觸發(fā)異常的時(shí)間單位是毫秒。當(dāng)該值被設(shè)為 0 時(shí),將不會(huì)產(chǎn)生異常。 UserID 屬性:當(dāng)用戶向 FTP 服務(wù)器請(qǐng)求建立連接時(shí)輸入的指定用戶 ID。 Vendor屬性:用于指明所要 連接的 FTP 服務(wù)器提供的是何種模式,這就能夠使應(yīng)用程序在進(jìn)行文檔列表時(shí)能夠采取適當(dāng)?shù)姆绞剑绻J讲磺宄?,默認(rèn)值將為用戶自動(dòng)檢測。默認(rèn)值是 NMOS_AUTO,常 用 的 有 NMOS_UNIX、 NMOS_WINDOWS、 NMOS_VM、 NMOS_BULL、NMOS_MAC、 NMOS_TOPS20、 NMOS_VMS、 NMOS_OS2、 NMOS_MVS_IBM、NMOS_MVS_INTERLINK 、 NMOS_OTHER 、 NMOS_AUTO 、 NMOS_NT 、NMOS_TANDEM、 NMOS_AS400、 NMOS_OS9、 NMOS_NETWARE 等。 2.4.2 常用方法介紹 NMFTP 控件在封裝了多數(shù)屬性、事件的同時(shí)、也為用戶提供了更多應(yīng)用處理單元,這為程序員更好的控制 FTP 協(xié)議提供了銳利的武器。下面列出了我們?cè)诔绦蜷_發(fā)當(dāng)中常用的一些方法。 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: Allocate 方法:用于在遠(yuǎn)程 FTP 服務(wù)器上分配空間來儲(chǔ)存文件。用法如下: ChangeDir 方法:用于更換遠(yuǎn)程 FTP 服務(wù)器上的工作目錄。 Delete 方法:用于刪除遠(yuǎn)程 FTP 服務(wù)器上的指定文件。 DoCommand 方法:用于向遠(yuǎn)程 FTP 服務(wù)器上發(fā)送各種指令,法 FTP服務(wù)器端的 指令不規(guī)則時(shí),這種方法最有用。 Download 方法:用于從遠(yuǎn)程 FTP 服務(wù)器向本地計(jì)算機(jī)下載指定文件。 DownloadRestore 方法:用于從遠(yuǎn)程 FTP 服務(wù)器向本地計(jì)算機(jī)下載指定文件。該文件以前曾經(jīng)下載過,但求未完成。 List 方法:用于把遠(yuǎn)程 FTP 服務(wù)器當(dāng)前工作目錄中的目錄和文件形成列表,當(dāng) ParseList 屬性為 True 時(shí),在執(zhí)行 List 方法時(shí)內(nèi)送的文檔列表將被羅列入屬性 FTPDirectoryList 中包括名稱、大小、日期、屬性;反之則不,如果需要處理文檔列表時(shí)只能在OnListItem 事件中進(jìn)行 。 List 方法運(yùn)行成功將觸發(fā) OnSuccess事件;失敗將觸發(fā) OnFailue 事件。 MakeDirector 方法:用于在遠(yuǎn)程 FTP 服務(wù)器當(dāng)前工作目錄中建立新的目錄。 Mode方法:用于在遠(yuǎn)程 FTP 服務(wù)器和本地計(jì)算機(jī)之間傳輸文件時(shí),改變傳輸模式。 Nlist 方法:用于從遠(yuǎn)程 FTP 服務(wù)器當(dāng)前目錄中獲取所有目錄和文件的名字。如果需要處理文檔列表只能在 OnListItem 事件中進(jìn)行。 NList 方法運(yùn)行成功將觸發(fā) OnSuccess 事件;失敗將觸發(fā)OnFailue 事件。 Reinitialize 方法:用于初始化當(dāng)前用 戶和 FTP 服務(wù)器建立起的有效連接,當(dāng)它執(zhí)行時(shí),將把連接置于無用的狀態(tài),要求重新輸入登錄帳號(hào)和口令。只有再次登錄正確才能政黨繼續(xù)工作。 RemoveDir 方法:用于在遠(yuǎn)程 FTP 服務(wù)器當(dāng)前工作目錄中刪除指定的目錄。 Rename 方法:用于在遠(yuǎn)程 FTP 服務(wù)器當(dāng)前工作目錄更名指定的文件。 Upload 方法:用于從本地計(jì)算機(jī)向遠(yuǎn)程 FTP 服務(wù)器上的當(dāng)前工作無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: 目錄上傳指定文件。 UploadAppend 方法:用于從本地計(jì)算機(jī)向遠(yuǎn)程 FTP 服務(wù)器上的當(dāng)前工作目錄上傳指定文件。當(dāng)該文件已經(jīng)存在時(shí),則追加在該文件的尾部。 Uploadrestore 方法:用于從本地計(jì)算機(jī)向遠(yuǎn)程 FTP 服務(wù)器上的當(dāng)前工作目錄上傳指定文件。該文件曾經(jīng)上傳達(dá)室過但不完全。 UploadUnique 方法:用于從本地計(jì)算機(jī)向遠(yuǎn)程 FTP 服務(wù)器上的當(dāng)前工作目錄上傳指定文件。上傳的文件名字將和在本地時(shí)是一樣的,如果遠(yuǎn)程 FTP 服務(wù)器存在同名文件時(shí),該文件在上傳時(shí)將被改名。 2.4.3 常用事件介紹 單擊 NMFTP 控件后,會(huì)顯示 Object Inspector 窗口,在 Events頁面上會(huì)顯示出 NMFTP 控件常用的事件。它主要是提供一些常用、便利的事件控制來響應(yīng)各種消息。 具體面板如圖 2-3 所示 圖 2-3 NMFTP 控件的事件面板 下面列出了我們?cè)诔绦蜷_發(fā)當(dāng)中常用的一些事件: OnConnect 事件 :當(dāng)用戶成功登錄到服務(wù)器時(shí)觸發(fā)該事件。 OnConnectionFailed 事件 : 當(dāng)用戶登錄到服務(wù)器失敗時(shí)觸發(fā)該事件。 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: OnAuthenticationFailed 事件 :當(dāng)用戶使用非法的用戶名和密碼登錄服務(wù)器時(shí)觸發(fā)該事件,將更改 Handled 參數(shù)。 OnConnectionRequired 事件 :在調(diào)用 TNMFTP 組件的方法時(shí),如果檢測到?jīng)]有連接到 FTP 服務(wù)器,就將觸發(fā)該事件; 處理這個(gè)事件的句柄時(shí),應(yīng)當(dāng)調(diào)用 Connect 方法來連接 FTP 服務(wù)器。 OnDisconnect 事件 :當(dāng)斷開與服務(wù)器的連接時(shí)所觸發(fā)的事件。 OnInvalidHost 事件 :當(dāng)在 Host 屬性所批定的主機(jī)名非法時(shí)觸發(fā)該事件。 OnListItem 事件 :程序執(zhí)行 List 命令時(shí)每檢索到一個(gè)文件都會(huì)激發(fā)這個(gè)事件。 OnPacketRecvd 事件 :在文件下載過程中,收到一個(gè)完整的數(shù)據(jù)塊就會(huì)觸發(fā)這個(gè)事件,通常的用法是用這個(gè)句柄來顯示下載的進(jìn)度。 OnpacketSent 事件 :在文件上載過程中,每發(fā)送一個(gè)完整的數(shù)據(jù)塊就會(huì)觸發(fā) 這個(gè)事件,通常的用法是用這個(gè)返回的句柄來顯示上載的進(jìn)度。 Onstatus 事件 :當(dāng) FTP 服務(wù)響應(yīng)命令返回狀態(tài)信息時(shí)將觸發(fā)這個(gè)事件。 OnSuccess 事件 : OnSuccess 事件是在服務(wù)器成功執(zhí)行命令后所觸發(fā)的事件。 OnError 事件 :如果在連接或傳輸數(shù)據(jù)的過程中出錯(cuò),就將自動(dòng)觸發(fā)這個(gè)事件,它屬于 TOnErrorEvent 類型。 OnFailure 事件 :這個(gè)事件是在 TNMFTP 組件調(diào)用某個(gè)方法失敗時(shí)觸發(fā)的事件。 OnTransactionStart 事件 :當(dāng)程序調(diào)用各種方法開始傳輸數(shù)據(jù)時(shí)所觸發(fā)的事件。 OnTransactionStop 事件 :當(dāng)程序調(diào)用各種方法傳達(dá)室輸數(shù)據(jù)并且傳輸完成后所觸發(fā)的事件。 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: 2.5 客戶機(jī) /服務(wù)器模式 在數(shù)據(jù)處理領(lǐng)域中,客戶機(jī) /服務(wù)器( Client/Server,簡稱 C/S)體系結(jié)構(gòu)受到極關(guān)注, C/S 已經(jīng)成為網(wǎng)絡(luò)計(jì)算機(jī)的主要方式。當(dāng)然基于 TCP/IP 的網(wǎng)絡(luò)通信主要模式也是客戶機(jī) /服務(wù)器方式。 2.5.1 什么是客戶機(jī) /服務(wù)器 客戶機(jī) /服務(wù)器并非是一種物理結(jié)構(gòu),也就是說,客戶機(jī)、服務(wù)器并非一定是兩臺(tái)計(jì)算機(jī),它們也可能位于同一臺(tái)計(jì)算機(jī)上,甚至客戶機(jī)和服務(wù)器的地位可以互換,某一時(shí)刻處 于客戶機(jī)地位的在另一時(shí)刻可能充當(dāng)服務(wù)器的角色。所以客戶機(jī) /服務(wù)器的理解應(yīng)是應(yīng)用程序之間相互作用的一種模型。 客戶機(jī)程序(進(jìn)程)發(fā)送請(qǐng)求給服務(wù)器程序(進(jìn)程),服務(wù)器進(jìn)程對(duì)客戶機(jī)的請(qǐng)求做出響應(yīng),并產(chǎn)生結(jié)果。一般來說,服務(wù)器進(jìn)程完成一些比較通用而特殊的處理,如進(jìn)行一些復(fù)雜的計(jì)算,大型數(shù)據(jù)庫的查詢等等。而客戶機(jī)進(jìn)程則由于將上述一些特殊的應(yīng)用交由服務(wù)器進(jìn)程處理,因而可以專心于其它工作,如事務(wù)處理、人機(jī)交互等等。顯然,客戶機(jī) /服務(wù)器模式下,客戶機(jī)為主動(dòng)方,即請(qǐng)求方;而服務(wù)器為被動(dòng)方,接受請(qǐng)求方。 網(wǎng)絡(luò)環(huán)境是客戶機(jī) /服務(wù) 器模式的主要應(yīng)用環(huán)境。計(jì)算機(jī)組網(wǎng)的目的是為了資源共享,在網(wǎng)絡(luò)中存在不同功能的設(shè)備,一般而言,作為服務(wù)器的計(jì)算機(jī)擁有比較豐富的資源,如高速 CPU、大容量硬盤、高速打印機(jī)、大型數(shù)據(jù)庫等等。而客戶機(jī)一般擁有相對(duì)比較少的資源,這時(shí),客戶機(jī)利用 TCP/IP 應(yīng)用程序來訪問服務(wù)器資源,而服務(wù)器的 TCP/IP 應(yīng)用程序則可以將客戶機(jī)訪問的結(jié)果回送給客戶機(jī)。這就是基于客戶機(jī) /服務(wù)器結(jié)構(gòu)的 TCP/IP 應(yīng)用。 2.5.2 如何采用客戶機(jī) /服務(wù)器模式 客戶機(jī)一方,通信應(yīng)用程序功能如下: 1. 打開通信信道(申請(qǐng)?zhí)捉幼郑⑦B接到服務(wù)器在 主機(jī)的保留端口,該端口對(duì)應(yīng)服務(wù)器的通信進(jìn)程。 2. 向服務(wù)器發(fā)出請(qǐng)求報(bào)文,等待接收應(yīng)答。 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: 3. 從服務(wù)器方收到最終應(yīng)答結(jié)果,或在不再請(qǐng)求時(shí)關(guān)閉信道并終止客戶機(jī)進(jìn)程。 服務(wù)器一方,通信應(yīng)用程序動(dòng)作如下: 1打開通信信道(申請(qǐng)?zhí)捉幼郑?,通知本地主機(jī)在某一保留端口接收客戶機(jī)請(qǐng)求。 2等待客戶機(jī)請(qǐng)求到達(dá)指定端口。 3接收到請(qǐng)求,啟動(dòng)一新進(jìn)程處理用戶機(jī)請(qǐng)求,同時(shí)釋放舊進(jìn)程以響應(yīng)新的客戶機(jī)請(qǐng)求,一旦服務(wù)完成,關(guān)閉新進(jìn)程與客戶機(jī)的通信鏈路。 4繼續(xù)等待客戶機(jī)請(qǐng)求。 5如果不想響應(yīng)客戶機(jī)請(qǐng)求,關(guān)閉服務(wù)器進(jìn)程。 由此看出,在客 戶機(jī) /服務(wù)器模式應(yīng)用程序中的服務(wù)器進(jìn)程必須先于客戶機(jī)進(jìn)程啟動(dòng),直到客戶的響應(yīng)結(jié)束或強(qiáng)迫終止。 2.6 第三方控件的安裝與刪除 眾所周知, Delphi 提供了大量的組件,使用這些組件基本上已能滿足我們的編程需求。但是在對(duì)于有特定要求的程序,僅僅使用Delphi 自帶的組件就無法適應(yīng)了。另外, Delphi 自帶的一些組件功能比較簡單,很難滿足我們一些特定的要求。值得慶幸的是,現(xiàn)在有很多的第三方組件,這些組件功能強(qiáng)勁,而且覆蓋了編程的方方面面,極大的方便了我們。使用這些第三方組件往往達(dá)到事半功倍的效果,大大提高編程的 效率。同時(shí)還能使我們的程序更漂亮、更專業(yè)、更強(qiáng)大。所以第三組件是我們使用 Delphi 編程一大法寶。 第三方組件往往是 Delphi 自帶組件的擴(kuò)展,是在 Delphi 自帶組件的基礎(chǔ)上加強(qiáng)功能,并進(jìn)行功能細(xì)化和專業(yè)化。例如,有些第三方組件把按鈕、標(biāo)簽細(xì)化為很多種,每一種實(shí)現(xiàn)一種特定的功能。另外一些第三組件是 Delphi 中沒有的,這些組件往往是根據(jù)編程時(shí)常遇到的需求,將一些常用的方法、函數(shù)以及 API 集成到這些組件中,編程時(shí)就不需要編寫這些程序了。如 TrayIcon、 Specomm 等。這些組件往往都特別有用。 下面就簡單 介紹一下三方控件在 Delphi無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: 中的安裝和刪除方法 2.6.1 控件的安裝 1、對(duì)于單個(gè)控件, Componet-install component.-PAS 或 DCU文件 -install; 2、對(duì)于帶 *.dpk 文件的控件包, File-Open(下拉列表框中選*.dpk)-install 即可; 3、對(duì)于帶 *.bpl 文件的控件包, Install Packages-Add-bpl 文件名即可; 4、如果以上 Install 按鈕為失效的話,試試 Compile 按鈕; 5、是 run time lib 則在 option 下的 packages 下的 runtimepackes加之。 安裝時(shí)常見問題及解決方案: 如果編譯時(shí)提示文件找不到的話,一般是控件的安裝目錄不在 Delphi 的 Lib 目錄中,有兩種方法可以解決: 1、反安裝的源文件拷入到 Delphi 的 Lib 目錄下; 2、或者 Tools-Environment Options 中把控件源代碼路徑加入到 Delphi 的 Lib 目錄中即可。 注意:所安裝的控件是否與你所用的 Delphi 版本相適應(yīng)。 2.6.2 控件的刪除 在 Component/Install Packages 中刪除。 選 Component/configure Palette有 pages 和 components 兩個(gè)區(qū)域雙擊 components 區(qū)域,選中要?jiǎng)h除得控件,下面有得 Delete 按鈕但系統(tǒng)提供的控件只能 Hide,不能 delete。打開控件所在的包文件 (*.dpk),從中刪除控件那個(gè)文件,再 重 新 編 譯 該 包 即 可 如 果 是 整 個(gè) 控 件 包 都 要 刪 除 的話 ,project-Option-Packages,刪掉那個(gè) packages,ok 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: 第 3 章 系統(tǒng)功能分析及界面設(shè)計(jì) 3.1 系統(tǒng)功能分析 系統(tǒng)開發(fā)的總體任 務(wù)是連接 FTP 服務(wù)器,上傳 /下載文件、對(duì) FTP服務(wù)器站點(diǎn)的管理、服務(wù)器端提供 FTP 服務(wù)、允許遠(yuǎn)程登錄下載服務(wù)器上的文件。功能層次圖如圖 3-1 所示 圖 3-1 FTP 客戶端功能層次圖 FTP 服務(wù)器端數(shù)據(jù)流圖,如圖 3-2 所示 圖 3-2 FTP 服務(wù)器端數(shù)據(jù)流圖 FTP 客戶端程序 本地文件操作 遠(yuǎn)程文件操作 連接設(shè)置 客戶端 命令 解析 存儲(chǔ)設(shè)備 文件 傳輸 日志文件 文件數(shù)據(jù) 文件數(shù)據(jù) 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: FTP 客戶端數(shù)據(jù)流圖,如圖 3-3 所示 圖 3-3 FTP 客戶端數(shù)據(jù)流圖 系統(tǒng) 開發(fā)是在系統(tǒng)分析的基礎(chǔ)上完成的。此程序中的 FTP 服務(wù)器端及客戶端需要完成的功能主要有: 服務(wù)器端: 提供 FTP 客戶端登錄 提供文件上傳 /下載 記錄登錄客戶端的 IP、用戶名、密碼以及日志信息 客戶端: FTP 連接 修改文件傳輸方式 連接設(shè)置 通過代理服務(wù)器連接 FTP 服務(wù)器 上傳 /下載文件 日志文件操作 FTP 服務(wù)器站點(diǎn)管理 下載隊(duì)列操作 下載狀態(tài)顯示 自定義命令操作 連接 人機(jī) 交互 FTP 服務(wù)器 遠(yuǎn)程操作 本地操作 存儲(chǔ)設(shè)備 用戶 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: 本地文件夾及文件操作 遠(yuǎn)程文件夾及文件操作 3.2 系統(tǒng)主界面設(shè)計(jì) 窗體名稱: Form1 窗體功能:實(shí)現(xiàn)各個(gè)模塊及菜單的顯示,是程序的主體。 控件名稱及屬性設(shè)置見附表 1。 控件位置設(shè)置如圖 3-4 所示 圖 3-4 控件位置設(shè)置圖 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: 主要彈出菜單的設(shè)計(jì)如圖 3-5,3-6,3-7 所示 圖 3-5 隊(duì)列編輯器菜單 圖 3-6 本地文件菜單 圖 3-7 遠(yuǎn)程文件菜單 3.3 站點(diǎn)管理器窗體設(shè)計(jì) 窗體名稱: Form2 窗體功能:對(duì) FTP 服務(wù)器站點(diǎn)對(duì)行設(shè)置、保存、管理。 控件名稱及屬性設(shè)置見附表 2。 控件位置設(shè)置見圖 3-8 圖 3-8 站點(diǎn)管理器 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: 3.4 閃現(xiàn)窗體的設(shè)計(jì) 窗體名稱: Splash 窗體功能:啟動(dòng)程序時(shí)顯示軟件信息,從而消除 使用者等待軟件啟動(dòng)時(shí)的焦慮心情。 效果如圖 3-9 所示 圖 3-9 閃現(xiàn)窗口 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: 第 4 章 系統(tǒng)主要功能實(shí)現(xiàn) 4.1 閃現(xiàn)窗口的實(shí)現(xiàn)要點(diǎn) 在 PB 中實(shí)現(xiàn)閃現(xiàn)窗體直接 Open(form2),close(form1)即可 ,在Delphi 中這樣是行不通的,在 Delphi 中如果這樣做程序根本就執(zhí)行不出來,在關(guān)閉 form1 時(shí)程序就退出了,要在 Delphi 中實(shí)現(xiàn)閃現(xiàn)窗體 首先,設(shè)置要閃現(xiàn)的窗體屬性(在本程序中的窗體是 Splash)BorderStyle 屬性組值設(shè)為空, BorderStyle 設(shè)為 bsNone 目地是去 掉最大 /小化按鈕及去除工具欄 在 Project-Options.中將窗體 Splash 從 Auto-create forms:中移到 Available forms:中,目地是不讓程序自動(dòng)創(chuàng)建該窗體。 在 Project 中加入如下代碼: begin Application.Initialize; Application.Title := FTP 精靈 ; splash:=Tsplash.Create(splash); /創(chuàng)建 splash splash.Show; /顯示 splash splash.Update; Application.CreateForm(TForm1, Form1); Application.CreateForm(TForm2, Form2); Splash.free; Application.Run; end. 接著在 splash 的 Create 中加入如下代碼: procedure TForm1.FormCreate(Sender: TObject); var CurrentTime:Longint; begin 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: CurrentTime:=GetTickcount div 1000; While (Longint(GetTickcount div 1000)提示符下使用 Help PWD指就會(huì)顯示 PWD 指令的具體幫助信息,同理于其他指令。我的 FTP客戶工具其實(shí)質(zhì)上就是集成這些指令并簡化這些命令行操作。 5.2 重要的有關(guān) FTP 的第三方控件包的介紹 本節(jié)我們將討論利用第三方控件來實(shí)現(xiàn)簡易的 FTP 服務(wù)器的制作。 在 Delphi 控件包中能夠制作 FTP 服務(wù)器的有 ICS 和 FTPSerevr無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: 等, ICS 控 件 包 , 可 以 在 主 頁 地 址http:/www.rtfm.be/fpiette/indexuk.htm 上 找 到 , 安 裝 后 , 在Delphi6 的控件面板上看見它的控件圖標(biāo)如圖 5-1 所示,左邊第三個(gè)控件就是它。 圖 5-1 ICS 控件包的面板及圖標(biāo) 5.2.1 常用屬性介紹 單擊 FTPServer 控件后,會(huì)顯示 Object Inspector 對(duì)話框,同時(shí)默認(rèn)顯示多數(shù) Properties(屬性)的設(shè)置初始值,它主要是提供一些常用、便利的控件屬性設(shè)置,用于使該控件正常的動(dòng)作。具體面板如圖 5-2 所示。 圖 5-2 FTPServer 控件的事件面板 FTPServer 控件的屬性面板中主要包括下面的一些屬性: Banner 屬性:控件中使用的標(biāo)語 MaxClients 屬性: FTP 服務(wù)最大支持的用戶數(shù)。 Port 屬性: FTP 服務(wù)所使用的端 口,通常為 21,當(dāng)自定義的 FTP無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: 服務(wù)可以指定所希望的端口值。 Tag 屬性:工具型輔助屬性,主要用于存儲(chǔ)附加的整形數(shù)據(jù)。 UserData 屬性:工具型輔助屬性,主要用于存儲(chǔ)附加的整形數(shù)據(jù)。 5.2.2 常用方法介紹 FTPServer 控件在封裝腔作勢多數(shù)屬性、事件的同時(shí),也為用戶提供了更多應(yīng)用處理單元,這為程序員更好的控制 FTP 協(xié)議提供了更銳利的武器。如果想更好的掌握這些方法,就需要不斷的實(shí)踐、總結(jié)。這些方法多數(shù)是繼承自其父類的,少數(shù)則是 FTPServer 控件所特有的,在多數(shù)情況下,只需掌握這些基本情況就足 夠了。下面列出了我在程序開發(fā)當(dāng)中常用的一些方法。 Start 方法:用于啟動(dòng) FTP 服務(wù)器。 Stop 方法:用于停止 FTP 服務(wù)器。 DiconnectAll:方法用于斷開所有與 FTP 服務(wù)器連接的用戶。 5.2.3 常用事件介紹 OnAlterDirector 事件:當(dāng)改變指定 FTP 服務(wù)器目錄名稱時(shí)觸發(fā)該事件。 OnAnwerToClient 事件:當(dāng) FTP 服務(wù)器應(yīng)答客戶機(jī)時(shí)觸發(fā)該事件。 OnAuthenticate 事件:當(dāng) FTP 服務(wù)器的用戶的身份得到驗(yàn)證時(shí)觸發(fā)該事件。 OnBuildDirectory 事件:當(dāng) 建立指定 FTP 目錄時(shí) 時(shí)觸發(fā)該事件。 OnChangeDirectory 事件:當(dāng)進(jìn)入指定 FTP 目錄 時(shí)觸發(fā)該事件。 OnClientCommand 事件:當(dāng) FTP 服務(wù)器收到來自客戶機(jī)指令時(shí)觸發(fā)該事件。 OnClientConnect 事件:當(dāng)客戶機(jī)連接到 FTP 服務(wù)器成功時(shí)觸發(fā)該事件。 OnClientDisconnect 事件:當(dāng)客戶從 FTP 服務(wù)器成功斷開時(shí)觸發(fā)該事件。 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: OnMakeDirectory 事件:當(dāng)運(yùn)用客戶指令建立指定 FTP 目錄 時(shí)觸發(fā)該事件。 OnStart 事件:當(dāng)啟動(dòng) FTP 服務(wù)器的服務(wù)時(shí)觸發(fā)該事件 。 OnStop 事件:當(dāng)停止 FTP 服務(wù)器的服務(wù)時(shí)觸發(fā)該事件。 OnValidateGet 事件:當(dāng) FTP 服務(wù)器從客戶合法獲取數(shù)據(jù)時(shí)觸發(fā)該事件。 OnValidateGet 事件:當(dāng) FTP 服務(wù)器向客戶機(jī)合法傳輸出數(shù)據(jù)時(shí)觸發(fā)該事件。 5.3 FTP 服務(wù)器的設(shè)計(jì) FTP 服務(wù)器軟件一般具有啟動(dòng)服務(wù)、停止服務(wù)、日志管理、端口設(shè)置、斷開連接、退出系統(tǒng)等功能。 5.3.1 FTP 服務(wù)器界面設(shè)計(jì) 由上面的功能分析設(shè)計(jì)出如下界面,界面如圖 5-3 所示。 圖 5-3 FTP 服務(wù)器設(shè)計(jì)窗體圖 窗體上擺放的各控件描述如表 5-1 所示。 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: 表 5-1 控件描述表 控件類型 控件名稱 描述 窗體控件:屬于ToolButton1 類 Form1 程 序 的 主 窗 體 ,Caption 屬性設(shè)置為“ FTP 簡易服務(wù)器” 多行文本編輯控件:屬于ToolButton1 類 Memo1 用于記錄 FTP 服務(wù)器 產(chǎn) 生 日 志 的 具體內(nèi)容 工具條控件:屬于ToolButton1 類 ToolBar1 提供了 6 個(gè)ToolButton,它的Align 屬性什為alTop;Images 屬性設(shè)置為ImagesList1。 工具條上的按鈕控件:屬于ToolButton1 類 ToolButton1 用于下達(dá)遠(yuǎn)程 FTP服務(wù)器啟動(dòng)服務(wù)的指令, Caption屬性設(shè)置為“啟動(dòng)服務(wù)” 工具條上的按鈕控件:屬于ToolButton1 類 ToolButton3 用于下達(dá)遠(yuǎn)程 FTP服務(wù)器停止服務(wù)的指令, Caption屬性設(shè)置為“停止服務(wù)” 工具條上的按鈕控件:屬于ToolButton1 類 ToolButton5 用于更改 FTP 服務(wù)器的工作端口,Caption 屬性設(shè)置為“服務(wù)端口” 工具條上的按鈕控件:屬于ToolButton7 用于清除 FTP 服務(wù)器產(chǎn)生的日志內(nèi)無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: ToolButton1 類 容, Caption 屬性設(shè)置為“清除日志” 工具條上的按鈕控件:屬于ToolButton1 類 ToolButton9 用于顯示本程序的關(guān)于信息,Caption 屬性設(shè)置為“關(guān)于” 工具條上的按鈕控件:屬于ToolButton1 類 ToolButton11 用下下達(dá)退出當(dāng)前應(yīng)用程序的指令, Caption 屬性設(shè)置為“退出” 圖片列表控件:屬于 TImagesList類 ImagesList1 用于存放ToolButton 中應(yīng)用的圖標(biāo)。 FTPServer 控件:屬于 TFTPServer類 FTPServer1 處理 FTP 服務(wù) 的核心控件,它的屬性設(shè)置為默認(rèn)值即可 主菜單設(shè)計(jì)控件:屬于 TMainMenu類 MainMenu1 為瀏覽器的主菜單,這包含了 2 個(gè)子菜單分別命名為文件,關(guān)于 狀態(tài)顯示條控件:屬于 TStatusBar類 StatusBar1 用于顯示程序運(yùn)行時(shí)已經(jīng)連接的客戶機(jī)數(shù)目 5.3.2 FTP 服務(wù)器功能的實(shí)現(xiàn) 啟動(dòng)服務(wù) :調(diào)用 FtpServer 的 Start 方法即可實(shí)現(xiàn) 停止服務(wù):調(diào)用 FtpServer 的 Stop 方法即可實(shí)現(xiàn),在停止后還要斷開所有客戶機(jī)的連接 FtpServer.DisconnectAll。 端口設(shè) 置:利用輸入框把用戶輸入的數(shù)字經(jīng)帶默認(rèn)值的轉(zhuǎn)換函數(shù)無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: 轉(zhuǎn)換賦值 FtpServer 的 Port 屬性即可 清除日志:調(diào)用 TMemo 的 Clear 方法就可輕松實(shí)現(xiàn) 關(guān)于:可以調(diào)用系統(tǒng) API 函數(shù)來顯示也可自行設(shè)計(jì)窗體實(shí)現(xiàn), API函數(shù)的調(diào)用方法在前面以經(jīng)介紹過不再重復(fù) 退出:調(diào)用 Close 方法即可,在 Close 事件中加入停止服務(wù)和斷開連接的相應(yīng)語句 運(yùn)行結(jié)果: 程序編譯后,單擊“啟動(dòng)服務(wù)”按鈕, FTP 服務(wù)器開始工作;單擊“停止服務(wù)”按鈕, FTP 服務(wù)器停止服務(wù);單擊“服務(wù)端口”按鈕,設(shè)置自定的端口進(jìn)行 FTP 服務(wù);單擊“消除日志 ”按鈕,程序?qū)⑶宄罩局械膬?nèi)容;單擊“退出”按鈕,系統(tǒng)斷開所有連接并退出。程序運(yùn)行結(jié)果如圖 5-4 所示 : 圖 5-4 FTP 服務(wù)器運(yùn)行結(jié)果 5.4 FTP 服務(wù)器端應(yīng)用擴(kuò)展分析 很多人可能都對(duì)駭客程序感興趣,得用上面的兩個(gè)工具就可以組成一個(gè)很好用的遠(yuǎn)程文件控制工具。一個(gè)好的工具是在別人不知不覺時(shí)默默工作的,下面討論幾種常用的手法來藏匿、啟動(dòng)自己的服無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: 務(wù)器軟件。 5.4.1 注冊(cè)自動(dòng)運(yùn)行的幾種方法 注冊(cè)自動(dòng)運(yùn)行就是當(dāng)開機(jī)時(shí)操作系統(tǒng)啟動(dòng)后根據(jù)注冊(cè)表信息自動(dòng)運(yùn)行的一些程序。討論的幾種方法就是如何操作注冊(cè)表,在編譯程序時(shí)在 Unit 中加入 IniFiles 和 Registry 單元。 操作 Win.ini 文件中的 Run 項(xiàng)目,具體代碼如下: Procedure SetWinIni; Var Test:TRegistry; iniFile:TIniFile; Path:String; Begin Test:TRegistry.create; Test.rootkey:=HKEY_LOCAL_MACHINE; If test.openkey(software microsoftwindowscurrentversion,false) then Path:=test.readstring(systemroot); /獲得 WINDOWS 系統(tǒng)目錄 caption:=Path test.free; /獲得 Win.ini 的完整路徑 path:=path+ win.ini; inifile:=tinifile.create(path); inifile.writestring(windows,run,application.exename); /run=執(zhí)行文件名 inifile.free; end; 設(shè)置程序菜單中的啟動(dòng)項(xiàng)目,并添加自運(yùn)行項(xiàng)目。這種方法太容無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: 易被發(fā)現(xiàn),所以不推薦使用。代碼如下: procedure setstartup; var test:tregistry; begin test:=tregistry.create; Test.rootkey:=HKEY_USERS; If Test.openkey(.defaultsoftwaremicrosoftwindowscurrentversionexplorershell folders,false) then Test.writestring(startup,application.exename); /獲得 ” 啟動(dòng) ” 程序項(xiàng)準(zhǔn)確目錄 caption:=test.readstring(startup); test.free; end; 設(shè)置注冊(cè)表中的啟動(dòng)運(yùn)行項(xiàng)目,這種方法比較隱蔽,不易察覺。代碼如下: Procedure SetMyProgram; Var Test:tregistry; Begin Test:TRegistry.create; Test.rootkey:=HKEY_LOCAL_MACHINE; If test.openkey(software microsoftwindowscurrentversion,false) then Test.writestring(my program,application.exename); Caption:=test.readstring(my program); Test.free; End; 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: 5.4.2 防止程序多次重復(fù) 運(yùn)行 大制作利用端口進(jìn)行服務(wù)的程序時(shí),經(jīng)常要防止程序的重復(fù)執(zhí)行,因?yàn)橥环菘截愒谶\(yùn)行時(shí)會(huì)使用相同的 IP 地址和相同端口,必然會(huì)產(chǎn)生沖突。下面討論幾種常用的防止程序二次運(yùn)行的方法。它們的核心就是要在程序啟動(dòng)過程中查找到程序是否已經(jīng)運(yùn)行了。 利用 Windows API 函數(shù) FindWindows()查找窗口是否存在恢復(fù)Application和 Title 值上述步驟一般在主窗體的 OnCreate 事件中實(shí)現(xiàn),代碼如下: Procedure tform2.formcreate(sender:tobject); Var Zappname:array0.127 of char; Hold:string; Found:HWND; Begin Hold:=application.tile; /暫時(shí)修改窗口標(biāo)題 application.title:=onlyone+inttostr(hinstance); /原窗口標(biāo)題 strpcopy(zappname,hold); /查找窗口 found:=findwindow(nil,zappname); /恢復(fù)窗口標(biāo)題 application.title:=hold; if found0 then begin /若找到則激活已運(yùn)行的程序并結(jié)束自身 showwindow(found,sw_restore); application.terminate; end; end; 在 .DPR件中加上如下代碼: if hprevinst =0 then begin 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: /檢查沒有再調(diào)用 application.createform(myform,myform); application.run; end; 創(chuàng)建標(biāo)題法,如果在創(chuàng)建 過程中發(fā)現(xiàn)已經(jīng)有該標(biāo)題的存在則退出,代碼如下: program del3test; uses forms,windows,sysutils, del3unit in del3unit.pasform1; $R *.RES var hmutex:hwnd; ret:integer; begin application.initialize; application.title:=運(yùn)行一次 ; hmutex:=createmutex(nil,false, 運(yùn)行一次 ); ret:=getlasterror; if reterror_already_exists then begin application.createform(tform1,form1); application.run; end; else application.messagebox(程序已經(jīng)運(yùn)行 ,notes!,MB_OK); releasemutex(hmutex); end. 5.4.3 任務(wù)管理器中的隱形 上面討論到的方法并不能使程序完全隱身,當(dāng)你用 Ctrl-Alt-Del組合鍵來執(zhí)行任務(wù)管理器時(shí)會(huì)發(fā)現(xiàn)程序的標(biāo)題出現(xiàn)在這時(shí)。那么怎無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: 么樣才能隱藏應(yīng)用程序不讓它出現(xiàn)在任務(wù)管理器中呢?方法有幾種 , 常 見 的 是 清 除 程 序 主 窗 口 的 標(biāo) 題 , 還 有 就 是 調(diào) 用RegisterServiceProcess API 函數(shù)將程序注冊(cè)成為一個(gè)服務(wù)模式程序。需要注意的是 Windows NT 下沒有 RegisterServiceProcess 函數(shù)。 方法一:清除標(biāo)題法 program project1; uses forms, unit1 in unit1.pasform1; $R *.RES begin /此處設(shè)置標(biāo)題的清除 application.title:=; application.initialize; application.createform(tform1,form1); application.run; end. 另一種方法是: 在應(yīng)用常量中加入以下代碼: const RSP_SIMPLE_SERVICE=1; RSP_UNREGISTER_SERVICE=0; 在函數(shù)聲明中加入以下代碼: procedure registerserviceprocess(dwprocessid, dwtype:dword);stdcall external kernel32.dll; function getcurrentprocessid():dword;stdcall external kernel32.dll 現(xiàn)在就可以使用 RegisterServiceProcess 函數(shù)了。 Procedure tform1.formcreate(sender:tobject); Begin Setwindowlong(application.handle,gwl_exstyle,ws_ex_toolwindo無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: w); RegisterServiceProcess(getcurrentprocessid(),RSP_SIMPLE_SERVICE); End; 5.4.4 可執(zhí)行文件的藏匿 在木馬的種植中有很多種方法,下面討論一下如何利用普通應(yīng)用程序來設(shè)置安裝運(yùn)行木馬程序。它的原理很簡單,其實(shí)就是制作一個(gè)安裝程序,但它是暗地里進(jìn)行的。自制的最簡單的安裝程序有多種,最簡單的就是用“ copy/b setup.exe+run.exe set.exe” 把需要運(yùn)行的程序加載在前一 個(gè)可執(zhí)行程序后面, setup.exe 文件的職責(zé)有兩個(gè),其一是顯示假象讓別人不知道這是一個(gè)木馬安裝程序,其二就是真實(shí)目的從指定字長定位將木馬服務(wù)程序截取下來并運(yùn)行安裝,由于木馬服務(wù)部分已經(jīng)采用了“隱形”技術(shù),所以根本不會(huì)察覺,代碼部分就是定拷貝,這里不再闡述。還有一種方法是在資源文件 (.RES)中預(yù)先裝入木馬,并以數(shù)據(jù)形式存于當(dāng)前可執(zhí)行程序,在合適的時(shí)機(jī)釋放即可。討論目的不是為了破壞,而是更好的了解更好的了解木馬機(jī)制而防范于未然和更好的提高個(gè)人的編程水平。下面這段代碼可用于從資源文件中釋放指定的文件。代碼如下 : procedure res_savetofile(form:pchar;fileto:strin); var tempdir:string; buf:pointer; size:longint; h,reshandle:cardinal; zip:file; begin h:=getmodulehandle(pchar(extractfilename(paramstr(0); tempdir:=; reshandle:=findresource(h,makeintresource(1),DAT); buf:=pointer(loadresource(h,reshandle); size:=sizeofresource(h,reshandle); 無憂無慮畢設(shè)網(wǎng) ():畢業(yè)設(shè)計(jì)源碼下載 畢業(yè)設(shè)計(jì)源碼下載: assignfile(zip,tempdir+fileto); rewrite(zip,1); try blockwrite(zip,buf,size) finally closefile(zip); end; end; 資源文件 test.rc 制作如下: 內(nèi)容: 1 DAT “test.ext” 制作: BRCC32 test.rc 在資源文件處加入: $R *.dfm /加入 TEST.R

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論