Skip to content

File(include big files) share system based on python.

License

Notifications You must be signed in to change notification settings

luyao777/P2P-FileShare

Repository files navigation

P2P-FileShare

File(include big files) share system based on python.

系统简介

实现了P2P分布式文件共享系统,方便用户之间完成完整的去中心化文件传输,包括文本,音乐,视频等等。用户节点即是资源提供者,又是资源获取者,节点与可信其他节点互联,避免C/S架构下的文件共享系统容易被封杀的问题。

本系统有如下几个特点:对用户的权限控制,凭借泛洪查询功能,获取文件目标资源。底层采用socket编程实现主机间通信。基于xml的远程过程调用完成查询,广播,以及文件传输功能。实现了对文件传输的优化,能够支持大文件的分布式传输。

整体功能

  1. 客户端通过Md5生成密钥,用来作为与服务器通信的唯一凭证。
  2. 主机探测活跃节点,加载已知节点列表,在查询时维护这个列表,如果探测到节点异常,则从维护的列表中删除该节点。
  3. 查询功能,客户端向服务器端发送查询请求,(通过fetch命令获取资源),本地服务器通过handle命令进行响应并进行查找,如果找到目标资源,则直接下载,否则向维护的列表中的活跃节点广播(broadcast函数)该请求。
  4. 处理响应请求:判断文件路径是否合法,判断文件是否存在,判断是否存在资源访问异常,判断请求资源是否是共享资源。
  5. 广播功能:过滤重复查询的请求,根据响应请求对异常进行处理,维护活跃节点列表。 6) 文件传输功能:资源节点与源节点建立连接,对文件传输进行,考虑了大文件下的传输问题。

Usage

NodeFile为各个节点的文件分享目录 将需要分享的文件放置此目录即可进行共享

url.txt 为各个节点维护的已知的可信节点列表,存储了节点连接关系

启动三个节点进行模拟

pythonw gclient.py url1.txt NodeFiles01 http://127.0.0.1:6666
pythonw gclient.py url2.txt NodeFiles02 http://127.0.0.1:7777
pythonw gclient.py url3.txt NodeFiles03 http://127.0.0.1:8888

在任意一个节点的客户端输入查询资源,点击下载即可下载到本机。

致谢

魔力·Python的基础上完成本系统。

程序流程图

4.png

说明性图片(1)

3.png

说明性图片(2)

1.png

About

File(include big files) share system based on python.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages