使用GUI共享文件(2):再次實現

使用XML-RPC共享文件(1):初次實現
python

使用XML-RPC共享文件(2):再次實現
算法

使用GUI共享文件(1):初次實現
安全

5.再次實現服務器

第一個原型很是簡單,他確實實現了文件共享功能,但對用戶不太友好。若是用戶可以知道有哪些文件可用(這些文件多是程序啓動時就位於文件目錄中,也多是後來從其餘節點那裏下載的),將大有裨益。再次實現將實現這種列出文件的功能。微信

要保護節點包含的文件的列表,必須添加一個方法。你能夠像對待方法fetch那樣使用密碼來保護這個方法,但讓任何人均可以使用它頗有用,並且不會帶來任何安全風險。對對象進行擴展很容易——只需從它派生出子類便可。所以,你從Node類派生出子類ListableNode,並在其中新增一個方法list,它調用方法os.listdir來返回一個列表,其中包含指定目錄中的全部文件。機器學習

爲訪問這個服務器方法,在客戶端中添加方法update_list。學習

屬性self.files指向一個列表框,這個列表框是在方法create_widgets中添加的。在方法create_widgets中建立列表框時,調用了方法update_list。另外,每次調用fetch_handler時,也調用了方法update_list(由於調用fetch_handler可能致使文件列表發生變化)。fetch

就這麼簡單。至此,你建立了一個支持GUI的P2P文件共享程序,要運行它,可以使用以下命令:ui

python guiclient.py urlfile.txt files/ http://localhost:8000url

下圖顯示了最終的GUI客戶端。

固然這個程序存在很大的擴展空間。有關這方面的建議,請參閱下一節。除這些建議外,你還可充分發揮本身的想象力。

6.進一步探索

以前的項目提出了一些有關如何對文件共享系統進行擴展的建議,這裏再列出一些。

  • 讓用戶選擇要獲取的文件,而不是輸入其文件名。

  • 添加一個狀態欄,在其中顯示諸如Downloading或Couldn't find file foo.txt等消息。

  • 想辦法讓節點可以共享「好友」。例如,兩個節點彼此認識後,它們均可將本身認識的節點介紹給對方。另外,也可以讓節點在關閉前將其知道的節點都告知全部的鄰居。

  • 在GUI中添加一個顯示已知節點(URL)的列表,讓用戶可以添加新的URL並將其保存到URL文件中。

今天的文章有不懂的加一下羣(羣號:822163725,備註:小陳學Python,不備註但是會被拒絕的哦~!),項目源碼傳到了羣文件,歡迎你們加羣下載和交流技術!

今天七夕,祝你們七夕快樂!願天底下全部的有情人都可以像兩個互相認識的節點同樣彼此之間共享着過去,如今乃至將來的點點滴滴!

最後歡迎你們掃碼關注

本文分享自微信公衆號 - Python機器學習算法說書人(Python-ML-Algorithm)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索