使用XML-RPC共享文件(1):初次实现
python
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源创计划”,欢迎正在阅读的你也加入,一块儿分享。