环境工具:Centos7.2vim/gcc/g++/gdb/makefile/git

项目描述同一个局域网中,用户利用这个工具下载他们之间共享的文件。

主要流程:客户端/服务端一体:

1.搭建HTTP服务器,线程分离服务端与客户端 。

2.主机配对,列出局域网内所有IP,对运行下载器的用户发送配对请求

3.共享文件列表的获取,发送HTTP请求获取文件列表。

4.下载列表文件,获得的文件长度并分块区域划分,创建多进程分块下载

流程框架

交互数据流图

主要的功能接口

服务器端

1. 提供客户端的主机配对功能

2. 提供客户端的文件列表获取功能

3. 提供客户端的文件下载功能

/*    客户端配对请求
请求: GET /hostpair HTTP/1.1              /hostpair
响应: HTTP/1.1 200 OK   客户端文件列表获取请求        请求:GET /list/ HTTP/1.1                 /(list/){0,1}        响应:              HTTP/1.1 200 OK              Content-Length: len                            filename1\n              filename2\n              ...
客户端文件分块下载请求
请求:            GET /list/filename HTTP/1.1           /list/(.*)            Range: byte=range_start-range_end
响应:
HTTP/1.1 200 OK
Content-Length: range_size
range_data */ #define SHARED_DIR  "shared"
class P2PServer {
private:
httplib::Server srv;
public:
static void PairHandler(const Request& req, Response& res);         /*附近主机配对请求处理*/
static void ListHandler(const Request& req, Response& res);        /*文件列表请求处理*/
static void DownloadHandler(const Request& req, Response& res); }; /*文件下载请求处理*/ 

客户端

1. 提供能够发现匹配局域网附近主机功能

2. 提供能够获取指定主机共享文件列表功能

3. 提供能够下载指定主机下指定的共享文件功能

#define DOWNLOAD_DIR    "download"
#define RANGE_SIZE      (10 << 20)
class P2pClient {   private:        std::vector<std::string> _host_list; std::vector<std::string> _file_list;    private:        bool GetHostList(std::vector<std::string> &list);        int64_t GetFileSize(int file_id); public:        int  SelectShow();              //用户选择显示        bool PairNearbyHost();          //附近主机匹配        bool ShowNearByHost();          //显示附近主机        bool GetShareList(int host_id); //获取指定主机的共享文件列表        bool ShowShareList();           //显示指定主机的共享文件列表        bool DownLoadFile(int file_id); //下载指定主机的共享文件 };

项目展示
1.搜索附近主机

2.搜索完毕之后添加主机显示文件列表下载

3.成功下载文件

项目代码

httplib库下载

在使用httplib库的时候,需要g++4.8版本以上所以(4.8还是4.5我忘了,反正运行的时候报了很多错,上网查了一下)需要升级的话执行下面的操作

yum install centos-release-scl -y
yum install devtoolset-7 -y 

以下命令添加在 bashrc 中,在家目录中找到.bashrc 找到并添加

source /opt/rh/devtoolset-7/enable 

点点下载器(局域网下载器)相关推荐

  1. Python3.X 爬虫实战(静态下载器与解析器)

    [工匠若水 http://blog.csdn.net/yanbober 未经允许严禁转载,请尊重作者劳动成果.私信联系我] 1 背景 这两天比较忙,各种锅锅接,忙里偷闲完结这一篇吧.在我们在上一篇&l ...

  2. python视频下载-python动态视频下载器的实现方法

    这里向大家分享一下python爬虫的一些应用,主要是用爬虫配合简单的GUI界面实现视频,音乐和小说的下载器.今天就先介绍如何实现一个动态视频下载器. 爬取电影天堂视频 首先介绍的是python爬取电影 ...

  3. android版 点击下载,自动点击器最新版

    <自动点击器 最新版>是一款非常实用的连点工具应用.有些朋友可能时常抱怨抢不到红包,还有些游戏操做需要不断的点击,非常的麻烦,但是有了这款应用,只需要设置好点击的间隔频率,就能帮助你放开双 ...

  4. 手机dpi修改工具_手机dpi修改器app下载-手机dpi修改工具官方版 v1.0_5577安卓网

    手机dpi修改器app下载,这是一款能调节手机dpi的辅助软件,软件设置步骤十分简单,无须root就能调节dpi参数,玩家可以针对不同的游戏选用不同的dpi,这样就能快速找到最佳的手感,欢迎下载! [ ...

  5. 安卓手机小说阅读器_书城小说阅读器app下载_书城小说阅读器手机版下载

    书城小说阅读器是一款智能小说阅读软件,可以智能搜索全网的小说,通过关键字搜索小说,一键轻松阅读小说,感兴趣的朋友快来下载书城小说阅读器吧. 书城小说阅读器app特色 1.内置智能查找.目录查找.关键字 ...

  6. MTK Http Socket GPRS以及解析器和下载器概述

    MTK App网络应用介绍 MTK App网络开发步骤 GPRS网络注册模块 Socket联网API接口 HTTP功能部件 使用HTTP封装解析器和下载器 Parser Downloader 调试功能 ...

  7. 播放器android版最新官方版下载安装,万能播放器安卓版下载

    万能播放器安卓版下载介绍 万能播放器安卓版下载是一款操作简单的影音文件播放工具,小伙伴们可以使用万能播放器播放喜欢的影音文件.万能播放器可支持p2p在线点播.边看边下.防病毒等功能.万能播放器几乎兼容 ...

  8. 火车头采集器V10下载-火车头采集器免费

    火车头采集器V10下载,火车头采集器V10操作难吗?使用火车头采集器需要一定的代码技术,以及编程能力才能更好的运用好火车头采集器V10,建议你先看HTML代码方法撰写采集规则.今天给大家分享一款可视化 ...

  9. Google Earth谷歌地球卫片下载器--可下载全球历史卫星,无偏移、高精度

    Google Earth谷歌地球卫片下载器--可下载全球历史卫星,无偏移.高精度 Google Earth谷歌地球卫片下载器 (build662)升级正式发布,水经注万能地图下载器升级正式发布,水经注 ...

最新文章

  1. 初为项目经理,你应该怎么做?(转载)
  2. 以CSGO为例 分析不同网络延时下FPS游戏同步的实现
  3. C#中的DBNull、Null、和String.Empty解释
  4. 关于oracle分组后组外排序的问题
  5. cmos图像传感器应用实例及其发展趋势分析
  6. as android.mk 变色,FFmpeg4Android:AS中使用NDK
  7. mysql-innoDB学习笔记
  8. “暖男”经济学:创业者最后的增长红利?
  9. 制作U盘免疫病毒文件夹
  10. Struts2拦截器详解
  11. 北京大学计算机学硕考研分数线,2020北京大学研究生分数线汇总(含2016-2020历年复试)...
  12. Android 桌面小部件的背景透明度及颜色的动态实现
  13. windows dhcp服务器使用脚本批量创建作用域
  14. 【zznu-2173】
  15. 炼数成金深入BI - Kettle 篇
  16. 基于51单片机+ULN2003控制步进电机S曲线加减速
  17. 解决“fatal: 'origin' does not appear to be a git repository...”
  18. 【Linux杂篇】经常登录Linux,用户密码背后的知识了解一下
  19. 合天网安 在线实验 CTF竞赛 writeup(第七周 | 再见上传、第八周 | 随意的上传、第十三周 | simple xxe、第十五周 | 回显的SSRF)
  20. 寻找我梦,再见2016

热门文章

  1. 台式计算机无法访问网络,完美:台式计算机的解决方案无法访问Internet,但手机可以连接到wifi无线网络...
  2. 用python画的炫酷图形_推荐一个炫酷Python 手绘图形库
  3. 浙大毕业典礼上研究生替直博生哥们在线“征婚”,网友:浙大是吧?来了!...
  4. 什么样的命名才是合理的?谈命名的原则
  5. java飞行_Java飞行记录器
  6. DataGridView 使用精华
  7. 2007.5.13 祝天下所有的母亲: 节日快乐!
  8. Docker学习1-CentOS 7安装Docker
  9. VMware 8.0.2的license
  10. 腾讯云cos html,腾讯云COS对象存储基础设置全攻略记录