【UNIX】基於C++語言的FTP模擬系統【C++、QT、Ubuntu系統】

目錄

1.設計要求

2.系統需求分析

2.1系統整體需求分析

2.1系統功能需求分析

3.系統設計

3.1系統結構設計

3.2客戶端系統功能設計

3.3服務器系統功能設計

4.系統實現

4.1客戶端實現

4.2服務器實現

5.源代碼


開發語言:C++

開發環境:Ubuntu、QT/C++

1.設計要求

利用Linux環境下Socket API實現FTP模擬系統,該系統分爲服務器和客戶端兩部分,服務端接受客戶端連接請求,當接受請求後建立一個服務器分線程,並新建新的Socket連接處理文件傳輸工作。

客戶端提供FTP服務器連接請求,並提供FTP命令相關功能。完成文件在客戶端和服務端的傳送。將源文件複製到目的目錄,服務端和客戶端都可以作爲源文件端,實現FTP的下載與上傳,如果文件存在則覆蓋原始文件。

2.系統需求分析

2.1系統整體需求分析

(1)具有簡潔、易操作的交互界面;

(2)對於用戶的合法操作能夠進行正確處理,呈現出正確直觀的反饋;

(3)對於非法操作,系統能夠做出判斷,並向用戶反饋錯誤提示;

(4)能夠適應不同流量的訪問;

(5)能夠滿足用戶訪問不同服務器的需求。

2.1系統功能需求分析

1)客戶端功能需求分析

  • 用戶註冊、登錄、註銷;
  • 文件下載、下載目錄修改、下載進度條;
  • 文件上傳;
  • 文件(夾)瀏覽;
  • 用戶幫助。

2)服務器功能需求分析 

  • 服務器啓動;
  • 服務器關閉;
  • 文件管理(刪除、重命名、移動、複製、編輯等);
  • 用戶管理(刪除用戶);
  • 響應客戶端的請求。

3.系統設計

3.1系統結構設計

開發FTP客戶端/服務器軟件必須遵循FTP的工作模式,FTP的獨特優勢在於它在兩臺通信主機之間使用了兩條TCP連接,一條用於數據傳送,一條用於控制信息的傳送。這種將命令和數據分開傳送的思想大大提高FTP工作的效率

3.2客戶端系統功能設計

1)用戶註冊

用戶註冊時,輸入用戶名和密碼。用戶名和密碼保存在文件中。用戶名不可重複。

2)登錄與註銷

登錄時,用戶可以選擇實名登錄或者匿名登錄(即遊客模式)。不同的登錄方式,顯示不同的功能權限,增加了服務器的安全性。匿名用戶只能下載服務器上的文件。註銷將斷開客戶端與服務器的連接,使所有功能不可用。

3)文件下載

用戶單擊文件,系統提供下載的目的路徑,用戶選擇路徑,單擊“確定”,系統開始下載,下載過程中,進度條顯示下載進度。

4)文件上傳

用戶上傳文件時,打開本地資源管理器,選擇所要上傳的文件,即可進行上傳。用戶上傳的文件統一上傳至唯一指定的目的文件夾。

5)文件瀏覽

用戶單擊“瀏覽”,系統顯示出FTP文件庫中的文件夾及文件,單擊文件夾,進入文件夾內部;單擊文件,會出現“下載”按鈕、“取消”按鈕及修改下載目錄的按鈕。

4)用戶幫助

單擊“幫助”,顯示各按鈕的作用。

3.3服務器系統功能設計

1)服務器啓動

單擊服務器“啓動”按鈕,可以啓動服務器,使其進入監聽狀態。服務器創建一個空的套接字,將空套接字和本機IP地址和端口號綁定,之後成爲一個三元組,指定一個socket爲監聽接口,使socket可以接收網絡連接請求。

2)服務器關閉

關閉服務器,服務器停止監聽,並且關閉操作窗口。

3)文件管理

文件管理包括文件刪除、文件重命名、文件移動、文件編輯等。單擊“文件管理”,系統跳轉值FTP文件庫的資源管理器中,供管理員進行管理操作。

4)用戶管理

用戶管理主要功能爲刪除用戶。

4.系統實現

4.1客戶端實現

1)連接服務器

用戶進入系統時,需要填寫IP地址以作爲連接服務器,同一IP下有三個以端口區分的服務器來滿足大流量訪問的壓力。用戶也可以選擇“匿名登錄”。

                                                

                                                                  圖4-1客戶端連接服務器界面

2)用戶登錄

用戶登錄時,需填寫正確的“賬號”、“密碼”,若填寫錯誤,系統將進行錯誤反饋。

                                                

                                                                        圖4-2 用戶登錄界面

3)用戶註冊

用戶註冊時,需填寫“用戶名”、“密碼”、“確認密碼”。用戶名與已註冊用戶不能重複,密碼與重複密碼必須一致。

                                                       

                                                                           圖4-3 用戶註冊界面

4)遊客模式

用戶登錄系統時,選擇匿名登錄,即進入“遊客模式”。該模式下,用戶僅具有“瀏覽”和“下載”功能的權限。

                                            

                                                                            圖4-4 遊客操作界面

5)用戶模式

用戶登錄系統時,用戶選擇服務器登錄,輸入賬號及密碼,登錄成功後,進入用戶模式,該模式下,用戶擁有“瀏覽”、“下載”、“上傳”等功能。

                                   

                                                                   圖4-5 普通用戶登錄界面

6)瀏覽文件

用戶瀏覽文件時,系統左側顯示文件夾,右側顯示文件。單擊文件夾,進入該文件內層;單擊文件,可以選擇進行下載。

                                     

                                                                       圖4-6 瀏覽文件界面

7)下載文件

文件下載的原理就是在本地新建同名文件並在數據通道接收數據,然後將數據寫入文件。客戶端文件下載的過程如下:

選中需要下載的文件,點擊“下載”按鈕,觸發函數,調用read()函數將數據讀入緩衝區中,然後在的調用write()函數從緩衝區中讀出數據,寫入指定目錄的指定文件中。

下載時,可以修改目錄,將文件下載至指定目錄下。

                                         

                                                                            圖4-7 下載文件界面

8)上傳文件

文件上傳的原理是讀取本地文件數據,將數據通過數據通道發送給服務器,服務器再將數據寫入遠程文件。客戶端上傳文件,先選中需要上傳的文件,單擊“上傳”按鈕,觸發函數,進度條顯示上傳進度。

                                   

                                                                               圖4-8上傳文件界面

4.2服務器實現

1)文件管理

服務器進行文件管理時,進入資源管理器,可以對文件夾及文件進行“移動”、“複製”、“重命名”、“刪除”等操作。

                                    

                                                                             圖4-9 文件管理界面

2)用戶管理

服務器端對用戶的管理,僅設置“用戶刪除”功能。

                                                      

                                                                            圖4-10 用戶管理界面

3)響應請求

服務器對客戶端的請求的響應處理,是系統的核心,是系統能正常工作的基礎。服務器對用戶的“登錄”、“註冊”、“退出”、“瀏覽”、“幫助”、“上傳”、“下載”等功能進行響應的處理反饋。

                                                         

                                                                                圖4-11服務器響應界面

5.源代碼

鏈接:https://pan.baidu.com/s/1-1v_6X3-Q11j-DRu9ts2FA 
提取碼:nvkz

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章