# p2pshare **Repository Path**: lovevivirain/p2pshare ## Basic Information - **Project Name**: p2pshare - **Description**: p2pshare是一个基于 libp2p 的文件共享和聊天程序 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-05-09 - **Last Updated**: 2023-05-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # p2pshare ## 项目正在迭代开发中,请勿用于生产环境! ## 简介 #### p2pshare是一个基于 libp2p 的文件共享和聊天程序 ## 安装 从gitee上clone本项目 ``` git clone https://gitee.com/lovevivirain/p2pshare.git ``` 初始化项目 ``` go mod tidy ``` ## 用法 在app/p2pshare下打开终端 ``` go build main.go ``` 客户端模式启动: `./main -name <名字>` 服务器模式启动: `./main -pub -nocrypt` 启动后首先要求输入密码,对于第一次使用的名字,该密码将会用于设置密码,后续登录会验证密码。 如果忘记了密码,可以删除 `HOME/.config/p2pshare/name_priv.key`,然后重新运行命令输入密码,但是以后你的 peer-ID就会改变了。 连接成功后终端会显示下列信息: ``` 成功连接 bootstrap 节点: {QmdVoz8Y6QfKxvQ7nuC37JduuoAekeYDnzL46mBKa42XNM: [/ip4/148.70.58.15/tcp/4001]} 功能:使用libp2p共享文件和聊天。 启动: ./p2pshare -name <名字> Commands: find -- 从网络中查找文件,返回搜索结果"p2p-ID:path/to/file" get -- 从对方节点下载文件 search -- 搜索名字包含key的用户 whois <名字> -- 搜索该名字对应的 p2p-ID talk -- 和对方建立聊天连接 say -- 向talk连接的对方发送聊天信息 msg -- 发送公共信息 deny -- 拒绝接受对方发出的公共信息 msgto -- 向 p2p-ID 节点发送聊天信息 本节点的共享文件保存路径为: ..\sharefiles > ``` 接下来再开一个终端,重复上述操作,使用不同的名字,mdns即可完成两个本地节点的发现,体验上述Commands ## 联系 如果您有任何问题想联系我们,可以联系我们的邮箱,我们会及时回复您的邮件:lovevivi121@qq.com 或者添加我的微信,邀请你一起参与项目开发。 vx ## TODO List - [x] 点对点通信协议的搭建 - [x] 实现局域网节点发现-mdns - [x] 基础聊天功能完成 - [x] 简单分块传输功能(目前有bug,传输后文件块hash值被改变) - [x] 压缩传输 - [x] 根据文件生成MerkelDAG - [ ] 内网穿透 - [ ] 增量传输、断点续传... - [ ] 更完善的单元测试 - [ ] 日志功能,包括操作日志和系统日志 - [ ] 客户端搭建 - [ ] 支持HTTP服务 - [ ] 接入小程序 - [ ] 其他待办事项... ## 贡献 如果您有任何想法或建议 p2pshare,请随时在 Gitee 上提交`issues`或`pr`。我们欢迎您的贡献! pr包括但不限于文件测试、方法测试,修bug,拓展功能, > 完整的规范步骤请参考:[CONTRIBUTEING](CONTRIBUTING.md) ## 许可证 p2pshare 在 Apache 许可下发布。请参见 LICENSE 文件。