【項目】皮卡丘下載器

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

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