python作業:高級FTP程序

?

要求:

  1. 用戶加密認證
  2. 允許同時多用戶登錄
  3. 每個用戶有自己的家目錄 ,且只能訪問自己的家目錄
  4. 對用戶進行磁盤配額,每個用戶的可用空間不同
  5. 允許用戶在ftp server上隨意切換目錄
  6. 允許用戶查看當前目錄下文件
  7. 允許上傳和下載文件,保證文件一致性
  8. 文件傳輸過程中顯示進度條
  9. 附加功能:支持文件的斷點續傳

?

?

程序流程圖:

?

程序Readme:

MiniFTP主要是由三部分組成:服務器端、客戶端、管理端。本文主要就是介紹以上三部分內容。

系統初始配置

管理員賬號

用戶名:admin 密碼:password

用戶賬號:

用戶名:zhangsan 密碼:123

服務器地址:

IP:127.0.0.1? Port:8808

服務器端

服務器端主要是處于長期運行監控狀態。在調用啟動之后,即無需再次操作。

?

涉及文件目錄:

?

Bin文件夾:主要是放置的服務器啟動文件,運行該文件夾下的start文件即可啟動服務器

Core文件夾:主要存放服務器程序的核心部分,涉及文件的作用如下:

????????????? heart.py?? 主要是服務器與終端的連接方式設定,內部設有相應功能模塊

????????????? Record.py??? 此文件是設定的服務器log日志顯示和存儲的形式

Data文件夾:主要是存放數據,涉及的文件夾和文件作用如下:

Conf文件夾:存放configure.py文件,此文件作用是默認參數配置,默認內容如下圖:

此處存放有當前服務器監控的地址和端口,可更改此處來實現實際需要。

另一個較為重要的是管理員的賬號和密碼,此程序暫不支持更改管理員賬號和密碼,但管理員賬號和密碼是由管理員程序使用的,普通用戶程序使用無效。

Docs文件夾:此文件夾主要存放的是客戶上傳到服務器的文件,存放的原則是按照用戶名來創建相應的文件夾。

Log文件夾:此文件夾下存放的是系統日志,系統運行之后會按照日期生成對應的日志文件,文件名形式為:年-月-日.txt

Users文件夾:此文件夾下存在兩個文件,一個是Quota.txt,存放的是用戶當前允許使用的配額。一個是UserAuth.txt,存放的是注冊用戶的信息。

?

客戶端:

組成:

?

?

?????? 客戶端部分涉及到的是MiniClient,此文件夾下主要是有Bin和Core兩個文件夾組成。

Bin文件夾下放置程序開始的文件Start.py;Core文件夾下放置程序的核心文件CCore.py

功能:

?

?????? 客戶端主界面如下:

?

?

普通用戶主要涉及以下功能:

?

輸入錯誤的命令會得到相應的命令提示,輸入help也會得到相應的命令提示,但僅為簡單命令提示,如圖:

?

?

具體命令格式請參考如下說明:

1、 put,上傳文件

?

語法: put 文件名

PS. 此處的進度條僅支持在cmd環境下顯示。

文件上傳支持斷點續傳,即客戶端在上傳期間,出現錯誤導致上傳未完成,再次登錄并上傳未完成文件時,系統會繼續傳輸。前提是文件MD5值不改變。

  1. get 下載文件

    ?

語法: 1、 get 原文件名? 目標文件地址和目標文件名

? ? ? ? ? ? 2、get 原用戶名

此處的進度條僅支持在cmd環境下顯示。

???????????????????? 不指定下載目錄,則系統自動選擇當前運行文件夾

      

?

???????????????????? 提供了目的文件地址的,會自動下載到指定目錄

      

?

  ? ? 2.創建目錄:

          ?

?          語法: mkdir 文件夾名

  ? ? 3.刪除目錄

???        ???

          語法:rm 文件夾名/文件名

?

    4.遍歷當前目錄的相關信息

?         ? ?

?????? ?????      ? 語法:ls

    5.切換目錄

         ??

         語法:cd 文件夾名

    若需返回上層目錄,則可以使用 cd ..來進行切換

?

?

   6.顯示當前所在目錄的信息

        ?

?        語法:pwd

?

??????

若需要退出,可直接輸入“bye”退出程序

管理端

組成:

?

?

管理端部分涉及到的是MiniAdmin,此文件夾下主要是有Bin和Core兩個文件夾組成。

Bin文件夾下放置程序開始的文件start.py;Core文件夾下放置程序的核心文件ACore.py

?

功能:

管理員需要使用專用端與服務器進行通信,管理員界面顯示的主要功能如下:

?

1、 注冊用戶

可注冊允許登錄ZFTP的普通用戶賬號

2、 刪除用戶

可刪除當前已存在的普通用戶賬號

3、 查看用戶

可查看當前已存在的普通用戶賬號。

4、 修改配額

可修改注冊用戶的空間配額值

5、 退出

退出系統

?

目前不支持管理員更改自身的用戶名和密碼。

?

?

已修復BUG

?

1、 將客戶端端口號規范至合理范圍(0-65535)。

2、 斷點續傳方面,解決傳輸終端后再次傳輸引起的非正常MD5值不一致問題。

3、 斷點續傳方面,解決客戶端在使用非法文件替換合法文件引起MD5值不一致后,再次用合法文件傳輸仍舊出現MD5不一致的情況。

4、 解決傳輸超過空間限額的文件時引起的系統崩潰。

?

?

附:斷點續傳簡要說明

1、 首先使用客戶端連接至服務器

2、 上傳文件并終端客戶端

3、 重新登錄服務器:

4、 重新進行上傳

5、 若上傳文件名一樣但是內容不一樣的文件,則會報錯:

  服務器報以下提示:
  

  客戶端報以下提示:

  

?

?

?

?代碼鏈接:

鏈接:http://pan.baidu.com/s/1pKEXw5X 密碼:xikg

?鏈接: https://pan.baidu.com/s/1ggSgW75 密碼: scgf

?

以上僅為參考,希望不要照抄。

轉載于:https://www.cnblogs.com/mstzkot/p/7765773.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/370775.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/370775.shtml
英文地址,請注明出處:http://en.pswp.cn/news/370775.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

webpack學習筆記 (一)

一、安裝nodejs; 點擊打開nodejs官方站點; 點擊下圖框住的按鈕,下周nodejs安裝包; 安裝下載好的安裝包。 安裝完畢之后,在cmd中輸入node -v查看是否已經安裝成功 如果有版本號顯示,則代表安裝成功&#xf…

將渦輪增壓器添加到JEE Apps

我扮演的關鍵角色之一是在本地社區中傳播Akka。 作為討論的一部分,人們通常會想到的問題/疑問是Akka如何針對編寫良好的Java / JEE應用程序提供更好的可伸縮性和并發性。 由于底層硬件/ JVM保持不變,因此參與者模型如何比傳統的JEE應用程序發揮更多的功…

python package_python之package定義

一.簡單說明 python是通過module組織代碼的,每一個module就是一個python文件,但是modules是通過package來組織的。我們平時在簡單測試的時候 一般就是幾個Python文件存放在同級的目錄下,但是當我們開始嘗試開發更為復雜的項目時,p…

html 手機端無法拖動地圖,關于騰訊地圖api的禁止地圖拖動問題

禁用滾動和拖動*{margin:0px;padding:0px;}body, button, input, select, textarea {font: 12px/16px Verdana, Helvetica, Arial, sans-serif;}p{width:603px;padding-top:3px;overflow:hidden;}.btn{width:142px;}#container{min-width:600px;min-height:767px;}//初始化函數…

《一起》個人進展——Day07

昨天做了些什么:實現登錄界面的美化 今天的計劃:還是準備進行與其他界面的融合 遇到的困難:代碼了解不夠,融合起來會出現bug轉載于:https://www.cnblogs.com/gxt-/p/6828131.html

epoll nio區別_【總結】兩種 NIO 實現:Selector 與 Epoll

我想用這個話題小結下最近這一階段的各種測試和開發。其實文章的內容主要還是想總結一下NIO Socket,以及兩種不同操作系統實現NIO的方式,selector和epoll。問題應該從服務器端開始說起。我們都寫過net包下的socket,用socket的accept方法來等待…

MapReduce的工作原理

一、MapReduce模型框架 MapReduce是一個用于大規模數據處理的分布式計算模型,最初由Google工程師設計并實現的,Google已經將完整的MapReduce論文公開發布了。其中的定義是,MapReduce是一個編程模型,是一個用于處理和生成大規模數據…

react實現多行文本超出加省略號

http://www.css88.com/archives/5206 overflow : hidden; text-overflow: ellipsis; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; 根據該文章方法,放在react項目中發現并不能實現,仔細觀察發現原來react解析出來的css樣…

Google Guava MultiMaps

番石榴 這是系列文章中的第一篇,我將嘗試解釋和探索Google很棒的Guava java庫 。 我在搜索Apache Commons Collections的通用版本時遇到了番石榴(Guava)–我需要一個Bimap并且厭倦了必須使用強制類型轉換來填充我的代碼–但是我發現要好得多…

qq群 html,我的群組-普通群組.html

我的群組-普通群組$axure.utils.getTransparentGifPath function() { return resources/images/transparent.gif; };$axure.utils.getOtherPath function() { return resources/Other.html; };$axure.utils.getReloadPath function() { return resou…

查看PLC IP 端口_西門子828D數控系統X130接口通訊怪異現象(X130手動設置的 IP)...

西門子828D數控系統,調試PLC過程中遇到網絡通信怪異問題(不能直連非要加個路由器),筆記本電腦的以太網網絡直接連接顯示網絡電纜被拔出,如下圖所示:奇怪,怎么出現這種情況了呢,因為我用這臺電腦調試過別的P…

基于嵌入式系統的gnash最小庫依賴關系

已經對gnash的依賴庫作了詳細的分析,下邊是必須依賴的庫:GIF Required libungif-devlibxml2 Required libxml2-devPNG Requir…

git 創建webpack項目_一次create-react-app創建項目升級webpack的流水賬

不再贅述為什么要升級webpack4,有興趣的小伙伴可以看一下 知乎:如何評價webpack4下面擼起袖子開干:克隆項目,新建分支git checkout -b feature_webpack_upgrade# 相當于以下兩句的簡寫git branch feature_webpack_upgradegit chec…

bzoj1263

貪心 n%31 分出一個4&#xff0c;其余用3&#xff0c;n%32&#xff0c;分出一個2&#xff0c;其余用3&#xff0c;然后高精度就行了 #include<bits/stdc.h> using namespace std; const int N 5005; struct BigInt {int len;int a[N];BigInt() { memset(a, 0, sizeof(a)…

c語言volatile_[技術]為什么單片機C語言編程時某一變量有時亂碼

最近一個項目里面&#xff0c;在KEIL中用C語言在單片機里面定義了一個狀態機全局變量&#xff0c;這個變量隨時會改變&#xff0c;用于切換觸摸屏的界面&#xff0c;可是程序運行中出現了一個問題&#xff0c;這個狀態機號總是出現了被莫名奇妙改變的問題&#xff0c;導致觸屏不…

沙箱Java代碼

在上一篇文章中&#xff0c;我們研究了如何保護移動Java代碼 。 這樣做的一種選擇是在籠子或沙箱中運行代碼。 這篇文章探討了如何為Java應用程序設置這樣的沙箱。 安全經理 Java中支持沙箱的安全性設施是java.lang.SecurityManager 。 默認情況下&#xff0c;Java在沒有Se…

微型計算機2017年9月上,2017年9月計算機一級考試WPS Office沖刺題

2017年9月計算機一級考試WPS Office沖刺題2017年下半年計算機一級考試將在9月份進行&#xff0c;為了方便考生備考計算機一級考試。下面是小編為大家帶來的計算機一級考試WPS Office沖刺題&#xff0c;歡迎閱讀。沖刺題一&#xff1a;1、PowerPoint 演示文稿和模板的擴展名是【…

七. 多線程編程5.創建多線程

到目前為止&#xff0c;我們僅用到兩個線程&#xff1a;主線程和一個子線程。然而&#xff0c;你的程序可以創建所需的更多線程。例如&#xff0c;下面的程序創建了三個子線程&#xff1a;// Create multiple threads.class NewThread implements Runnable { String name; /…

11尺寸長寬 iphone_弱電工程LED顯示屏尺寸規格及計算方法

前言&#xff1a;led屏幕在生活中&#xff0c;隨處可見&#xff0c;顯示屏、廣播屏等等&#xff0c;但是led尺寸怎么計算的&#xff0c;你知道嗎&#xff1f;今天我們一起了解一下led屏幕尺寸的計算方法。正文&#xff1a;一、點間距的計算1、各單元板常見型號及尺寸LED屏普遍是…

marquee標簽的使用

<!DOCTYPE html> <html> <head><meta charset"utf-8" /><title>演示marquee</title><style type"text/css">*{padding: 0px;margin: 0px;}marquee{border: 1px solid purple;}img{width: 360px;height: auto;}&…