【项目】共享下载器

1. 用户需求

你是否有过这样的情况——和舍友等分享文件时,可能双方传的文件过多/过少,并非自己全部要使用的,最主要的是分享者要去选择相关文件传输,太过于麻烦。于是产生了共享下载器项目,该项目根据网络传输、HTTP协议、TCP协议、分块传输机制、boost库、文件相关操作等技术完成,可以实现任意两台主机间共享文件的下载。

2. 项目介绍

共享下载器是一个文件共享下载器:

  • 搜索局域网中运行该工具的主机,获取在线主机列表,查看共享主机,进行主机配对;
  • 查看指定主机的共享文件列表;
  • 在共享文件下下载指定的文件。
3. 设计流程
3.1 框架图

在这里插入图片描述

3.2 流程图

在这里插入图片描述

3.3 客户端
  • 对服务器进行请求,在指定的共享主机下,进行指定文件目录下的文件共享下载:
    • 获取局域网中所有的IP地址信息;
    • 向获取到的IP主机地址发送主机配对请求(获取在线主机列表);
    • 显示在线的主机列表(用户选择具体主机);
    • 用户选择指定的主机发送文件列表获取请求(获取到主机上的共享文件列表);
    • 显示所有的文件列表,用户选择共享文件;
    • 向指定的主机发送文件数据获取请求(下载文件);

【接口】

//获取在线主机
bool GetOnlineHost() 

//获取文件列表
bool GetShareList(const std::string &host_ip)

//文件下载
//直接下载文件 - 文件较小
bool DownloadFile(const std::string &host_ip, const std::string& filename)

//分块下载文件 - 文件较大
bool RangeDownload(const std::string &host_ip, const std::string &name)
3.4 服务端
  • 实现一个http服务端程序,为客服端进行各种响应:
    • 搭建一个http服务器;
    • 提供主机配对功能;
    • 提供文件列表功能;
    • 提供下载功能文件功能。

【接口】

//主机配对
static void HostPair(const httplib::Request &req, httplib::Response &rsp) 

//获取共享文件列表
static void ShareList(const httplib::Request &req, httplib::Response &rsp)

//下载文件
static void Download(const httplib::Request &req, httplib::Response &rsp)
4. 源码

https://github.com/yang1127/Project/tree/master/共享下载器

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值