FTP服務與客戶端設計-畢業(yè)設計論文_第1頁
FTP服務與客戶端設計-畢業(yè)設計論文_第2頁
FTP服務與客戶端設計-畢業(yè)設計論文_第3頁
FTP服務與客戶端設計-畢業(yè)設計論文_第4頁
FTP服務與客戶端設計-畢業(yè)設計論文_第5頁
已閱讀5頁,還剩37頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、FTP服務與客戶端設計摘要 FTP為一種主流的網(wǎng)絡文件傳輸協(xié)議。設計和實現(xiàn)FTP服務與客戶端,有助于深入理解網(wǎng)絡編程和FTP協(xié)議,使理論知識和實踐結(jié)合起來。本文采用VC+6.0編程工具設計和實現(xiàn)了FTP服務與客戶端設計。其主要設計工作為:服務器端設計和客戶端設計。服務器端設計模塊主要有:服務器日志模塊,在線用戶模塊,程序設置模塊 ,統(tǒng)計模塊,安全模塊??蛻舳嗽O計模塊主要有:連接服務器模塊,上傳文件模塊,下載文件模塊。通過實際測試和應用,驗證了本文設計的正確性。關鍵詞 FTP 服務器 客戶端 VC+6.0The design of FTP Server and ClientAbstract FT

2、P is a mainstream network file transfer protocol. Design and Implementation of FTP services and clients will help in-depth understanding of network programming and FTP, and make the theoretical knowledge and practice together. In this paper, using VC + +6.0 programming tool, the FTP server and clien

3、t designe are designed and implemented. The main design work is for: the design of server and client . Server-side design modules are: server logs module, online modules, procedures set module, statistics module, the security module. lient design modules are: connect to server module, upload module,

4、 download files module. Through practical application and testing ,it verifys the correctness of the design of the paper.Keywords FTP Sever Client VC+6.0目 錄第1章緒論21.1FTP介紹31.2VC+6.0介紹61.3 本文工作內(nèi)容8第2章 系統(tǒng)整體設計92.1 FTP服務器整體設計92.2 FTP客戶端整體設計10第3章 FTP服務器模塊設計113.1服務器日志模塊113.2 在線用戶模塊163.3 程序設置模塊193.4 統(tǒng)計模塊223.

5、5 安全模塊25第4章 FTP客戶端模塊設計334.1連接服務器模塊334.2 下載文件模塊354.3 上傳文件模塊40第5章 結(jié)論和展望44致 謝45參考文獻46第1章 緒論1.1 FTP介紹FTP的主要作用,就是讓用戶連接上一個遠程計算機(這些計算機上運行著FTP服務器程序)察看遠程計算機有哪些文件,然后把文件從遠程計算機上拷到本地計算機,或把本地計算機的文件送到遠程計算機去。以hDz9wb- i(l*R中國Web技術站N GEHv /X1fG4ma8S(l74LNvh ?以下傳文件為例,當啟動FTP從遠程計算機拷貝文件時,事實上啟動了兩個程序:一個本地機上的FTP客戶程序:它向FTP服務

6、器提出拷貝文件的請求。 另一個是啟動在遠程計算機的上的FTP服務器程序,它響應請求把指定的文件傳送到計算機中。FTP采用“客戶機/服務器”方式,用戶端要在自己的本地計算機上安裝FTP客戶程序。FTP客戶程序有字符界面和圖形界面兩種。字符界面的FTP的命令復雜、繁多。圖形界面的FTP客戶程序,操作上要簡潔方便的多。簡單地說,支持FTP協(xié)議的服務器就是FTP服務器。 一般來說,用戶聯(lián)網(wǎng)的首要目的就是實現(xiàn)信息共享,文件傳輸是信息共享非常重要的一個內(nèi)容之一。Internet上早期實現(xiàn)傳輸文件,并不是一件容易的事, 我們知道 Internet是一個非常復雜的計算機環(huán)境,有PC,有工作站,有MAC,有大型

7、機,據(jù)統(tǒng)計連接在Internet上的計算機已有上千萬臺,而這些計算 機可能運行不同的操作系統(tǒng), 有運行Unix的服務器,也有運行Dos、Windows的PC機和運行MacOS的蘋果機等等,而各種操作系統(tǒng)之間的文件交流問題,需要建立一個統(tǒng)一的 文件傳輸協(xié)議,這就是所謂的FTP?;诓煌牟僮飨到y(tǒng)有不同的FTP應用程序,而所有這些應用程序都遵守同一種協(xié)議,這樣用戶就可以把自己的文件傳送給 別人,或者從其它的用戶環(huán)境中獲得文件。中國Web技術站| MZ5g0mq-|G$與大多數(shù)Internet服務一樣,F(xiàn)TP也是一個客戶機/服務器系統(tǒng)。用戶通過一個支持FTP協(xié)議的客戶機程序,連接到在遠程主機上的FT

8、P服務器程 序。用戶通過客戶機程序向服務器程序發(fā)出命令,服務器程序執(zhí)行用戶所發(fā)出的命令,并將執(zhí)行的結(jié)果返回到客戶機。比如說,用戶發(fā)出一條命令,要求服務器向用 戶傳送某一個文件的一份拷貝,服務器會響應這條命令,將指定文件送至用戶的機器上??蛻魴C程序代表用戶接收到這個文件,將其存放在用戶目錄中。中國Web技術站b:Qq5xu;m:c       在FTP的使用當中,用戶經(jīng)常遇到兩個概念:"下載"(Download)和"上載"(Upload)。"下載"文件就是從遠程主機拷

9、貝文件至自己的計算機上;"上載"文件就是將文件從自己的計算機中拷貝至遠程主機上。用Internet語言來說,用戶可通過客戶機程序向(從)遠程主機上載(下載)文件。中國Web技術站'ew'rF/E$DA.v       使用FTP時必須首先登錄,在遠程主機上獲得相應的權(quán)限以后,方可上載或下載文件。也就是說,要想同哪一臺計算機傳送文件,就必須具有哪一臺計算機的適當 授權(quán)。換言之,除非有用戶ID和口令,否則便無法傳送文件。這種情況違背了Internet的開放性,Internet上的FTP主機何止千萬,不可

10、能要 求每個用戶在每一臺主機上都擁有帳號。匿名FTP就是為解決這個問題而產(chǎn)生的。0P#YK)Z.8N4G,?M U%j        匿名FTP是這樣一種機制,用戶可通過它連接到遠程主機上,并從其下載文件,而無需成為其注冊用戶。系統(tǒng)管理員建立了一個特殊的用戶ID,名為anonymous, Internet上的任何人在任何地方都可使用該用戶ID。中國Web技術站2v1n)En(o!Iw&w7G$F       通過FTP程序連接匿名FTP主機的方式同連接普通F

11、TP主機的方式差不多,只是在要求提供用戶標識ID時必須輸入anonymous,該用戶ID的口令 可以是任意的字符串。習慣上,用自己的E-mail地址作為口令,使系統(tǒng)維護程序能夠記錄下來誰在存取這些文件。zkh*a*J8R/E-O       值得注意的是,匿名FTP不適用于所有Internet主機,它只適用于那些提供了這項服務的主機。當遠程主機提供匿名FTP服務時,會指定某些目錄向公 眾開放,允許匿名存取。系統(tǒng)中的其余目錄則處于隱匿狀態(tài)。作為一種安全措施,大多數(shù)匿名FTP主機都允許用戶從其下載文件,而不允許用戶向其上載文件,也 就是說

12、,用戶可將匿名FTP主機上的所有文件全部拷貝到自己的機器上,但不能將自己機器上的任何一個文件拷貝至匿名FTP主機上。即使有些匿名FTP主機 確實允許用戶上載文件,用戶也只能將文件上載至某一指定上載目錄中。隨后,系統(tǒng)管理員會去檢查這些文件,他會將這些文件移至另一個公共下載目錄中,供其他 用戶下載,利用這種方式,遠程主機的用戶得到了保護,避免了有人上載有問題的文件,如帶病毒的文件。中國Web技術站F:jm dD&V       作為一個Internet用戶,可通過FTP在任何兩臺Internet主機之間拷貝文件。但是,實際上大多數(shù)

13、人只有一個Internet帳戶,F(xiàn)TP主 要用于下載公共文件,例如共享軟件、各公司技術支持文件等。 Internet上有成千上萬臺匿名FTP主機,這些主機上存放著數(shù)不清的文件,供用戶免費拷貝。實際上,幾乎所有類型的信息,所有類型的計算機程序都可 以在Internet上找到。這是Internet吸引我們的重要原因之一。匿名FTP使用戶有機會存取到世界上最大的信息庫,這個信息庫是日積月累起來 的,并且還在不斷增長,永不關閉,涉及到幾乎所有主題。而且,這一切是免費的。中國Web技術站1f6Qa-h       匿名FTP是Internet網(wǎng)

14、上發(fā)布軟件的常用方法。Internet之所以能延續(xù)到今天,是因為人們使用通過標準協(xié)議提供標準服務的程序。像這樣的程 序,有許多就是通過匿名FTP發(fā)布的,任何人都可以存取它們。Internet中的有數(shù)目巨大的匿名FTP主機以及更多的文件,那么到底怎樣才能知道某一 特定文件位于哪個匿名FTP主機上的那個目錄中呢?這正是Archie服務器所要完成的工作。Archie將自動在FTP主機中進行搜索,構(gòu)造一個包含全部文件目錄信息的數(shù)據(jù)庫,使你可以直接找到所需文件的位置信息。其支持兩種模式,一種方式叫做Standard (也就是 Active,主動方式),一種是 Passive (也就是PASV,被動方式)

15、。 Standard模式 FTP的客戶端發(fā)送 PORT 命令到FTPserver。Passive模式FTP的客戶端發(fā)送 PASV命令到 FTP Server。Standard模式FTP 客戶端首先和FTP Server的TCP 21端口建立連接,通過這個通道發(fā)送命令,客戶端需要接收數(shù)據(jù)的時候在這個通道上發(fā)送PORT命令。 PORT命令包含了客戶端用什么端口接收數(shù)據(jù)。在傳送數(shù)據(jù)的時候,服務器端通過自己的TCP 20端口發(fā)送數(shù)據(jù)。 FTP server必須和客戶端建立一個新的連接用來傳送數(shù)據(jù)。Passive模式在建立控制通道的時候和Standard模式類似,當客戶端通過這個通道發(fā)送PASV 命令的

16、時候,F(xiàn)TP server打開一個位于1024和5000之間的隨機端口并且通知客戶端在這個端口上傳送數(shù)據(jù)的請求,然后FTP server 將通過這個端口進行數(shù)據(jù)的傳送,這個時候FTP server不再需要建立一個新的和客戶端之間的連接?,F(xiàn)在的FTP軟件里面包括在IE5以上的版本里面也已經(jīng)支持這兩種模式了。一般一些FTP客戶端的軟件就比較好設置了,一般都有一個PASV的選項,比如 CuteFTP,傳輸?shù)姆绞蕉加蠸tandard和PASV的選項,可以自己進行選擇;另外在IE里面如果要設置成PASV模式的話可以選中工具 Internet選項高級為FTP站點啟用文件夾視圖,否則就采用Standard模

17、式。1.2 VC+6.0介紹本課題設計采用Microsoft Visual C+6.0作為開發(fā)工具。Visual c+是開發(fā)Windows應用程序的主流開發(fā)工具,可以利用的資源多。Visual C+ 不僅僅是一個編譯器。它是一個全面的應用程序開發(fā)環(huán)境,使用它你充分利用具有面向?qū)ο筇匦缘?C+ 來開發(fā)出專業(yè)級的 Windows 應用程序。Visual  C+作為一種程序設計語言,它同時也是一個集成開發(fā)工具,提供了軟件代碼自動生成和可視化的資源編輯功能。在使用Visual  C+開發(fā)應用程序的過程中,系統(tǒng)為我們生成了大量的各種類型的文件。 Visual C+采用的框架

18、是MFC。MFC不僅僅是人們通常理解的一個類庫。你如果選擇了MFC,也就選擇了一種程序結(jié)構(gòu),一種編程風格。MFC 是一個很大的、擴展了的 C+ 類層次結(jié)構(gòu),它能使開發(fā) Windows 應用程序變得更加容易。MFC 是在整個 Windows 家族中都是兼容的,也就是說,無論是 Windows3.x、Windows95 還是 Windows NT,所使用的 MFC 是兼容的。每當新的 Windows 版本出現(xiàn)時,MFC 也會得到修改以便使舊的編譯器和代碼能在新的系統(tǒng)中工作。MFC 也回得到擴展,添加新的特性、變得更加容易建立應用程序。 使用 MFC 的最大優(yōu)點是它為你做了所有最難做的事。MFC 中

19、包含了上成千上萬行正確、優(yōu)化和功能強大的 Windows 代碼。你所調(diào)用的很多成員函數(shù)完成了你自己可能很難完成的工作。從這點上將,MFC 極大地加快了你的程序開發(fā)速度。由于MFC編程方法充分利用了面向?qū)ο蠹夹g的優(yōu)點,它使得我們編程時極少需要關心對象方法的實現(xiàn)細節(jié),同時類庫中的各種對象的強大功能足以完成我們程序中的絕大部分所需功能,這使得應用程序中程序員所需要編寫的代碼大為減少,有力地保證了程序的良好的可調(diào)試性。最重要的是MFC類庫在提供的對象的各種屬性和方法都是經(jīng)過謹慎的編寫和嚴格的測試,可靠性很高,這就保證了使用MFC類庫不會影響程序的可靠性和正確性。MFC的常用類有:1).CWnd:窗口,

20、它是大多數(shù)“看得見的東西”的父類(Windows里幾乎所有看得見的東西都是一個窗口,大窗口里有許多小窗口),比如視圖CView、 框架窗口CFrameWnd、工具條CToolBar、對話框CDialog、按鈕CButton,etc;一個例外是菜單(CMenu)不是從窗口派生 的。該類很大,一開始也不必學,知道就行了。 2).CDocument文檔,負責內(nèi)存數(shù)據(jù)與磁盤的交互。最重要的是OnOpenDocument(讀入),OnSaveDocument(寫盤),Serialize(讀寫)。 3).CView視圖,負責內(nèi)存數(shù)據(jù)與用戶的交互。包括數(shù)據(jù)的顯示、用戶操作的響應(如菜單的選取、鼠標的響應)。

21、最重要的是OnDraw(重畫窗 口),通常用CWnd:Invalidate()來啟動它。另外,它通過消息映射表處理菜單、工具條、快捷鍵和其他用戶消息。你自己的許多功能都要加在 里面,你打交道最多的就是它。 4).CDC設備文本。無論是顯示器還是打印機,都是畫圖給用戶看。這圖就抽象為CDC。CDC與其他GDI(圖形設備接口)一起,完成文字和圖形、圖 像的顯示工作。把CDC想象成一張紙,每個窗口都有一個CDC相聯(lián)系,負責畫窗口。CDC有個常用子類CClientDC(窗口客戶區(qū)),畫圖通常通過 CClientDC完成。 5).CDialog對話框。 6).CWinApp應用程序類。似于C中的main

22、函數(shù),是程序執(zhí)行的入口和管理者,負責程序建立、消滅,主窗口和文檔模板的建立。最常用函數(shù)InitInstance():初始化。 7).CGdiObject及子類,用于向設備文本畫圖。它們都需要在使用前選進DC。 8).CPen筆,畫線。 9).CBrush刷子,填充。 10).CFont字體,控制文字輸出的字體。 11).CBitmap位圖。 12).CPalette調(diào)色板 。 13).CRgn區(qū)域,指定一塊區(qū)域可以用于做特殊處理。 14).CFile文件。最重要的不外是Open(打開),Read(讀入),Write(寫)。 15).CString字符串。封裝了C中的字符數(shù)組,非常實用。 16)

23、.CPoint點,就是(x,y)對。 17).CRect矩形,就是(left,top,right,bottom)。 18).CSize大小,就是(cx,cy)對(寬、高)。1.3 本文工作內(nèi)容本文的主要工作為FTP服務器和客戶端的設計。其主要設計內(nèi)容有:(1)服務器設計: 服務器日志模塊。 在線用戶模塊。 程序設置模塊 。 統(tǒng)計模塊。 安全模塊。(2)客戶端設計: 連接服務器模塊。 上傳文件模塊。 下載文件模塊。 第2章 系統(tǒng)整體設計本系統(tǒng)的設計為FTP服務器和客戶端設計,主要設計模塊分為服務器設計模塊和客戶端設計模塊。服務器設計模塊包括:服務器日志模塊,在線用戶模塊,程序設置模塊 ,統(tǒng)計模塊

24、,安全模塊。客戶端設計模塊包括:連接服務器模塊,上傳文件模塊,下載文件模塊。2.1 FTP服務器整體設計 服務器設計模塊包括:服務器日志模塊,在線用戶模塊,程序設置模塊 ,統(tǒng)計模塊,安全模塊。其軟件設計模塊層次圖如圖2.1所示。圖2.1 FTP服務器模塊設計層次圖Fig. 2.1 FTP server module level design plans服務器日志模塊。服務器日志模塊的主要功能為顯示和記錄用戶的登錄信息和一系列的操作信息。例如用戶上傳文件內(nèi)容,上傳時間;下載文件內(nèi)容,下載時間等等。在線用戶模塊。在線用戶模塊的主要功能為顯示當前連接上服務器的用戶。程序設置模塊。程序設置模塊的主要功

25、能為配置服務器參數(shù)。例如允許用戶下載,允許用戶上傳等一些列用戶對服務器的操作參數(shù)配置。統(tǒng)計模塊。統(tǒng)計模塊的主要功能為統(tǒng)計歷史時間上,服務器各種操作的總量并顯示。例如服務器的總下載量,總上傳量,總連接用戶數(shù)等。安全模塊。安全模塊的主要功能為配置服務器的安全性。主要配置內(nèi)容為設置允許接入服務器的IP和禁止接入服務器的IP。2.2 FTP客戶端整體設計客戶端設計模塊包括:連接服務器模塊,上傳文件模塊,下載文件模塊。其軟件設計層次圖如圖2.2所示。圖2.2 FTP客戶端模塊設計層次圖Fig. 2.2 FTP client module level design plans連接服務器模塊。連接服務器模塊

26、的主要功能為根據(jù)用戶輸入的用戶名、密碼、服務器名和連接端口,完成客戶端對服務器的接入。上傳文件模塊。上傳文件模塊的主要功能為瀏覽本地文件,選擇上傳文件,上傳文件到服務器。下載文件模塊。下載文件模塊的主要功能為顯示服務器文件目錄,根據(jù)用戶選擇下載相應文件,存儲到本地機器硬盤上。第3章 FTP服務器模塊設計服務器的主要設計模塊為五個模塊:服務器日志模塊,在線用戶模塊,程序設置模塊 ,統(tǒng)計模塊,安全模塊。3.1服務器日志模塊服務器日志模塊的主要功能為顯示和記錄用戶的登錄信息和一系列的操作信息。其具體顯示和記錄的日志信息為:用戶登錄信息;用戶上傳文件信息;用戶下載文件信息;用戶設置服務器文件目錄信息;

27、用戶創(chuàng)建服務器文件目錄信息;用戶刪除服務器文件目錄信息;用戶修改服務器文件目錄信息;用戶下線信息。其程序具體設計方法為:當服務器接收到客戶端命令信息時,將信息顯示在服務器Log信息窗口,并將其記錄在文件中。其程序設計流程圖如圖3.1.1所示。圖3.1.1服務器日志模塊設計流程圖Fig. 3.1.1 Server logs modular design flow chart其服務器日志模塊運行界面圖如圖3.1.2所示圖3.1.2 服務器日志模塊運行界面圖Fig. 3.1.2 Server logs module running interface 其設計主要實現(xiàn)程序代碼如下:AddTraceLi

28、ne函數(shù)的主要功能為向服務器日志信息顯示List控件增加一個元素,用以顯示到來的信息。void CTracePage:AddTraceLine(int nLevel, LPCTSTR pstrFormat, .)CString str;/ format and write the data we were givenva_list args;va_start(args, pstrFormat);str.FormatV(pstrFormat, args);try/ create new messageCLogMsg *pLogMsg = new CLogMsg;GetLocalTime(&

29、;pLogMsg->m_sysTime);pLogMsg->m_nLevel = nLevel;pLogMsg->m_strText = str;m_QueueLock.Lock();m_LogQueue.AddTail(pLogMsg);m_QueueLock.Unlock();/ schedule log actionPostMessage(WM_ADDTRACELINE);catch(.)OnAddTraceLine函數(shù)為日志消息響應函數(shù),當服務器器接收到客戶端的信息時,向服務器日子模塊發(fā)送日志消息;日子模塊在響應函數(shù)OnAddTraceLine中,判斷消息的類別,根據(jù)

30、其類別設定其消息顯示內(nèi)容和內(nèi)容顯示顏色。LRESULT CTracePage:OnAddTraceLine(WPARAM, LPARAM)CLogMsg *pLogMsg;try/ get first message in the queue/m_QueueLock.Lock();pLogMsg = (CLogMsg *)m_LogQueue.RemoveHead();/m_QueueLock.Unlock();switch(pLogMsg->m_nLevel)case 1:m_TraceList.AddString(pLogMsg->m_strText, RGB(0,130,0)

31、;break;case 2:m_TraceList.AddString(pLogMsg->m_strText, RGB(0,0,255);break;case 3:m_TraceList.AddString(pLogMsg->m_strText, RGB(255,0,0);break;default:m_TraceList.AddString(pLogMsg->m_strText, RGB(0,0,0);break;/*CString strDateTime;strDateTime.Format("%02d/%02d/%02d %02d:%02d:%02d.%03d

32、 ", pLogMsg->m_sysTime.wDay, pLogMsg->m_sysTime.wMonth, pLogMsg->m_sysTime.wYear,pLogMsg->m_sysTime.wHour, pLogMsg->m_sysTime.wMinute, pLogMsg->m_sysTime.wSecond, pLogMsg->m_sysTime.wMilliseconds);switch(pLogMsg->m_nLevel)case 1:m_LogFile << error_lvl << strD

33、ateTime << pLogMsg->m_strText << endl;break;case 2:m_LogFile << warning_lvl << strDateTime << pLogMsg->m_strText << endl;break;case 3:default:m_LogFile << trace_lvl << strDateTime << pLogMsg->m_strText << endl;break; */delete pLogM

34、sg;catch(.)/ something is wrong.return TRUE;OnSize為日子模塊窗口大小改變事件響應函數(shù),當應用程序窗口大小發(fā)生改變時,會觸發(fā)窗口改變事件。在事件響應函數(shù)OnSize中,日子模塊改變窗口大小,使其和主窗口保持大小比例。void CTracePage:OnSize(UINT nType, int cx, int cy) CDialog:OnSize(nType, cx, cy);if (IsWindow(:GetDlgItem(m_hWnd, IDC_TRACE)CRect rect;GetClientRect(rect);/rect.Deflate

35、Rect(5,5,10,10);m_TraceList.MoveWindow(rect);void CTracePage:OnTraceClear() m_TraceList.ResetContent();void CTracePage:OnContextMenu(CWnd* pWnd, CPoint point) CMenu menu;menu.LoadMenu(MAKEINTRESOURCE(IDR_TRACE_MENU);menu.GetSubMenu(0)->TrackPopupMenu(0, point.x, point.y, this, NULL);3.2 在線用戶模塊在線用

36、戶模塊的主要功能為顯示當前連接上服務器的用戶。其顯示內(nèi)容有:用戶登錄用戶名,用戶IP,用戶登錄時間。顯示方法為使用ClistCtrl控件將顯示內(nèi)容顯示在其上。ClistCtrl控件常用操作方法如下。1)設置ClistCtrl類型。 DWORD SetExtendedStyle(DWORD dwNewStyle);其中 LVS_EX_CHECKBOXES 表示添加CheckBox, LVS_EX_FULLROWSELECT 表示選擇整行, LVS_EX_GRIDLINES 表示添加表格線。如果設置了LVS_EX_CHECKBOXES屬性,則可以用 

37、;BOOL GetCheck( int nItem ) const;來得到某一行是否Checked。2) 刪除操作。BOOL DeleteItem( int nItem),刪除指定的元素,nItem為要刪除的元素。BOOL DeleteAllItems( ),刪除所有的元素。3) 插入元素操作。int InsertItem( int nItem, LPCTSTR lpszItem),nItem為插入元素索引號,lpszItem為插入元素標簽地址。4)插入列操作。int InsertColumn( int nCol, LPCTSTR lpszColumnHeading, int nFormat

38、= LVCFMT_LEFT, int Width = -1, int nSubItem = -1 ),nCol為新列索引號,lpszColumnHeading列元素存放名稱地址。 5)設置列寬操作。BOOL SetColumnWidth( int nCol, int cx ), nCol列所引號,cx設置寬度。6)設置元素值操作。BOOL SetItemText(int nItem,int nSubItem, LPCTSTR lpszText ),nItem設置元素,nSubItem設置子元素,lpszText值內(nèi)容地址。其程序設計流程圖如圖3.2.1所示。圖3.2.1 在線用戶模塊

39、設計流程圖Fig. 3.2.1 Online user modular design flow chart在線用戶模塊運行界面圖如圖3.2.2所示。圖3.2.2 在線用戶模塊運行界面圖Fig. 3.2.2 Online user modular running interface其程序設計主要實現(xiàn)代碼如下:OnInitDialog()為在線用戶模塊對話框初始函數(shù),在線用戶模塊在這里為在線用戶List顯示控件,增添三個元素:“用戶名”,“IP地址”,“登陸時間”,用來顯示登陸用戶的信息。BOOL COnlineUsersPage:OnInitDialog() CDialog:OnInitDial

40、og();m_OnlineUsers.InsertColumn(1, "用戶名");m_OnlineUsers.InsertColumn(2, "IP 地址");m_OnlineUsers.InsertColumn(3, "登錄時間");DWORD dwStyle = m_OnlineUsers.GetExtendedStyle();dwStyle |= LVS_EX_FULLROWSELECT; m_OnlineUsers.SetExtendedStyle(dwStyle);return TRUE;AddUser函數(shù)為在線用戶信息顯

41、示List控件,增加元素函數(shù)。當有新的用戶登錄服務器時,在線用戶模塊調(diào)用AddUser函數(shù),顯示新的登錄用戶信息。void COnlineUsersPage:AddUser(DWORD nThreadID, LPCTSTR lpszName, LPCTSTR lpszAddress)CString strThreadID;strThreadID.Format("%d", nThreadID);LVFINDINFO info;info.flags = LVFI_PARTIAL|LVFI_STRING;info.psz = (LPCTSTR)strThreadID;int nI

42、ndex = m_OnlineUsers.FindItem(&info);if (nIndex = -1)nIndex = m_OnlineUsers.InsertItem(0, strThreadID);m_OnlineUsers.SetItemText(nIndex, 1, lpszName);m_OnlineUsers.SetItemText(nIndex, 2, lpszAddress);m_OnlineUsers.SetItemText(nIndex, 3, CTime:GetCurrentTime().Format("%H:%M:%S");RemoveU

43、ser函數(shù)為在線用戶信息顯示List控件,刪除元素函數(shù)。當有用戶下線時或則斷開服務器連接時,在線用戶模塊調(diào)用RemoveUser函數(shù),刪除相應的登錄用戶信息。void COnlineUsersPage:RemoveUser(DWORD nThreadID)LVFINDINFO info;CString strThreadID;strThreadID.Format("%d", nThreadID);info.flags = LVFI_PARTIAL|LVFI_STRING;info.psz = (LPCTSTR)strThreadID;int nIndex = m_Onlin

44、eUsers.FindItem(&info);if (nIndex != -1)m_OnlineUsers.DeleteItem(nIndex);3.3 程序設置模塊程序設置模塊的主要功能為配置服務器參數(shù)。其配置參數(shù)有:FTP連接端口,最大用戶連接數(shù),服務器開啟方式,服務器系統(tǒng)信息,Log文件查看和清除。其程序設計方法為:系統(tǒng)時刻監(jiān)控程序設置模塊,當程序設置模塊觸發(fā)應用消息時,系統(tǒng)重新讀入配置信息;當程序設置模塊觸發(fā)查看Log信息時,打開Log文件;當程序設置模塊觸發(fā)清除Log信息時,清空Log文件。其程序流程圖如圖3.3.1所示。圖3.3.1 程序設置模塊設計流程圖Fig. 3.3.

45、1 Procedures settings modular design flow chart程序設置模塊運行界面圖如圖3.3.2所示。圖3.3.2 程序設置模塊運行界面圖Fig. 3.3.2 Procedures settings modular running interface其程序設計主要實現(xiàn)實現(xiàn)代碼如下:OnDestroy函數(shù)為程序設置模塊銷毀函數(shù)。當主程序退出時,銷毀程序設置模塊,此時程序設置模塊調(diào)用OnDestroy函數(shù)讀取配置參數(shù),并將其寫入配置文件中存儲。void CConfigurationPage:OnDestroy() UpdateData();/ save setti

46、ngsAfxGetApp()->WriteProfileInt("Settings", "Port", m_nPort);AfxGetApp()->WriteProfileInt("Settings", "MaxUsers", m_nMaxUsers);AfxGetApp()->WriteProfileInt("Settings", "Timeout", m_nTimeout);AfxGetApp()->WriteProfileString("

47、;Settings", "WelcomeMsg", m_strWelcomeMessage); AfxGetApp()->WriteProfileString("Settings", "GoodbyeMsg", m_strGoodbyeMessage); AfxGetApp()->WriteProfileInt("Settings", "LaunchOnStartup", m_bLaunchOnStartup);AfxGetApp()->WriteProfileInt

48、("Settings", "StartInTray", m_bStartInTray);AfxGetApp()->WriteProfileInt("Settings", "AutoActivate", m_bAutoActivate);AfxGetApp()->WriteProfileInt("Settings", "LogLevel", m_nLogLevel);AfxGetApp()->WriteProfileString("Settings&

49、quot;, "AppName", m_strApplicationName);CDialogResize:OnDestroy();OnView()函數(shù)為程序設置模塊的日志文件查看函數(shù)。當用點擊查看日志按鈕時,程序設置模塊調(diào)用OnView()函數(shù)打開日志文件。void CConfigurationPage:OnView() int ExecStatus = (UINT)ShellExecute(m_hWnd, "open", "NOTEPAD.EXE", (LPCTSTR)theApp.m_LogFile.m_FileName, 0,

50、 SW_SHOW); switch(ExecStatus) case 0: MessageBox("Systeem is out of Memory","ShellExecute Error",MB_OK | MB_ICONEXCLAMATION); break; case 2: MessageBox("'NOTEPAD.EXE' is not found !","ShellExecute Error",MB_OK | MB_ICONEXCLAMATION); break; default: if

51、(ExecStatus <= 32) MessageBox("Problem with executing of NOTEPAD.EXE","ShellExecute Error",MB_OK | MB_ICONEXCLAMATION); break; OnClear()函數(shù)為程序設置模塊的日志文件清空函數(shù)。當用點擊查看日志按鈕時,程序設置模塊調(diào)用OnClear()函數(shù)清空日志文件。void CConfigurationPage:OnClear() theApp.m_LogFile.Clear();OnApply()函數(shù)為程序設置模塊程序設置參數(shù)存

52、儲函數(shù)。不同的是,該函數(shù)會向主程序發(fā)送程序設置參數(shù)改變消息,使主程序重新讀取配置參數(shù)。當用戶修改完程序設置參數(shù)后,點擊應用按鈕后,程序設置模塊調(diào)用OnApply()函數(shù)使新設置參數(shù)生效。void CConfigurationPage:OnApply() m_bModified = FALSE;UpdateDialogControls(this, FALSE);AfxGetMainWnd()->SendMessage(WM_COMMAND, IDC_APPLY);/ save settingsAfxGetApp()->WriteProfileInt("Settings&qu

53、ot;, "Port", m_nPort);AfxGetApp()->WriteProfileInt("Settings", "MaxUsers", m_nMaxUsers);AfxGetApp()->WriteProfileInt("Settings", "Timeout", m_nTimeout);AfxGetApp()->WriteProfileString("Settings", "WelcomeMsg", m_strWelcom

54、eMessage); AfxGetApp()->WriteProfileString("Settings", "GoodbyeMsg", m_strGoodbyeMessage); AfxGetApp()->WriteProfileInt("Settings", "LaunchOnStartup", m_bLaunchOnStartup);AfxGetApp()->WriteProfileInt("Settings", "StartInTray", m_bS

55、tartInTray);AfxGetApp()->WriteProfileInt("Settings", "AutoActivate", m_bAutoActivate);AfxGetApp()->WriteProfileInt("Settings", "LogLevel", m_nLogLevel);AfxGetApp()->WriteProfileString("Settings", "AppName", m_strApplicationName);3.

56、4 統(tǒng)計模塊統(tǒng)計模塊的主要功能為統(tǒng)計歷史時間上,服務器各種操作的總量并顯示。其統(tǒng)計參數(shù)有:總連接用戶數(shù),當前在線用戶數(shù),文件下載數(shù),文件上傳數(shù),文件下載失敗數(shù),文件上傳失敗數(shù),下載文件總量,上傳文件總量。其設計方法為:當有用戶登錄成功后,加一總連接用戶數(shù),加一在線用戶數(shù);當有用戶下線時,減一在線用戶數(shù);當有用戶下載文件時,加一文件總下載數(shù),下載文件總量加上下載文件大小,如果下載失敗,加一下載失敗總數(shù);當有上傳文件時,加一上傳文件總數(shù),上傳文件總量加上上傳文件大小,如果上傳失敗,加一上傳文件失敗總數(shù)。其程序設計流程圖如圖3.4.1所示。圖3.4.1 統(tǒng)計模塊程序設計流程圖Fig. 3.4.1 S

57、tatistics module design process flow chart其統(tǒng)計模塊運行界面圖如圖3.4.2所示。圖3.4.2 統(tǒng)計模塊運行界面圖Fig. 3.4.2 Statistics module running interface其程序主要設計代碼如下:統(tǒng)計模塊程序在其對話框初始化程序OnInitDialog()中,向統(tǒng)計信息顯示List控件中添加顯示元素。BOOL CStatisticsPage:OnInitDialog() CDialogResize:OnInitDialog();InitResizing(FALSE, FALSE, WS_CLIPCHILDREN);m_

58、StatisticsCtrl.InsertColumn(0, "名稱");m_StatisticsCtrl.InsertColumn(1, "值"); m_StatisticsCtrl.InsertItem(0, "總連接用戶數(shù)");m_StatisticsCtrl.SetItemText(0, 1, "0");m_StatisticsCtrl.InsertItem(1, "當前在線用戶數(shù)");m_StatisticsCtrl.SetItemText(1, 1, "0");m

59、_StatisticsCtrl.InsertItem(2, "下載文件總量");m_StatisticsCtrl.SetItemText(2, 1, "0");m_StatisticsCtrl.InsertItem(3, "上傳文件總量");m_StatisticsCtrl.SetItemText(3, 1, "0");m_StatisticsCtrl.InsertItem(4, "下載文件失敗數(shù)");m_StatisticsCtrl.SetItemText(4, 1, "0");m_StatisticsCtrl.InsertItem(5, "上傳文件失敗數(shù)&quo

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論