【项目】皮卡丘下载器

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/皮卡丘下载器

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章