点点下载器(局域网下载器)
环境工具:Centos7.2,vim/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
点点下载器(局域网下载器)相关推荐
- Python3.X 爬虫实战(静态下载器与解析器)
[工匠若水 http://blog.csdn.net/yanbober 未经允许严禁转载,请尊重作者劳动成果.私信联系我] 1 背景 这两天比较忙,各种锅锅接,忙里偷闲完结这一篇吧.在我们在上一篇&l ...
- python视频下载-python动态视频下载器的实现方法
这里向大家分享一下python爬虫的一些应用,主要是用爬虫配合简单的GUI界面实现视频,音乐和小说的下载器.今天就先介绍如何实现一个动态视频下载器. 爬取电影天堂视频 首先介绍的是python爬取电影 ...
- android版 点击下载,自动点击器最新版
<自动点击器 最新版>是一款非常实用的连点工具应用.有些朋友可能时常抱怨抢不到红包,还有些游戏操做需要不断的点击,非常的麻烦,但是有了这款应用,只需要设置好点击的间隔频率,就能帮助你放开双 ...
- 手机dpi修改工具_手机dpi修改器app下载-手机dpi修改工具官方版 v1.0_5577安卓网
手机dpi修改器app下载,这是一款能调节手机dpi的辅助软件,软件设置步骤十分简单,无须root就能调节dpi参数,玩家可以针对不同的游戏选用不同的dpi,这样就能快速找到最佳的手感,欢迎下载! [ ...
- 安卓手机小说阅读器_书城小说阅读器app下载_书城小说阅读器手机版下载
书城小说阅读器是一款智能小说阅读软件,可以智能搜索全网的小说,通过关键字搜索小说,一键轻松阅读小说,感兴趣的朋友快来下载书城小说阅读器吧. 书城小说阅读器app特色 1.内置智能查找.目录查找.关键字 ...
- MTK Http Socket GPRS以及解析器和下载器概述
MTK App网络应用介绍 MTK App网络开发步骤 GPRS网络注册模块 Socket联网API接口 HTTP功能部件 使用HTTP封装解析器和下载器 Parser Downloader 调试功能 ...
- 播放器android版最新官方版下载安装,万能播放器安卓版下载
万能播放器安卓版下载介绍 万能播放器安卓版下载是一款操作简单的影音文件播放工具,小伙伴们可以使用万能播放器播放喜欢的影音文件.万能播放器可支持p2p在线点播.边看边下.防病毒等功能.万能播放器几乎兼容 ...
- 火车头采集器V10下载-火车头采集器免费
火车头采集器V10下载,火车头采集器V10操作难吗?使用火车头采集器需要一定的代码技术,以及编程能力才能更好的运用好火车头采集器V10,建议你先看HTML代码方法撰写采集规则.今天给大家分享一款可视化 ...
- Google Earth谷歌地球卫片下载器--可下载全球历史卫星,无偏移、高精度
Google Earth谷歌地球卫片下载器--可下载全球历史卫星,无偏移.高精度 Google Earth谷歌地球卫片下载器 (build662)升级正式发布,水经注万能地图下载器升级正式发布,水经注 ...
最新文章
- 初为项目经理,你应该怎么做?(转载)
- 以CSGO为例 分析不同网络延时下FPS游戏同步的实现
- C#中的DBNull、Null、和String.Empty解释
- 关于oracle分组后组外排序的问题
- cmos图像传感器应用实例及其发展趋势分析
- as android.mk 变色,FFmpeg4Android:AS中使用NDK
- mysql-innoDB学习笔记
- “暖男”经济学:创业者最后的增长红利?
- 制作U盘免疫病毒文件夹
- Struts2拦截器详解
- 北京大学计算机学硕考研分数线,2020北京大学研究生分数线汇总(含2016-2020历年复试)...
- Android 桌面小部件的背景透明度及颜色的动态实现
- windows dhcp服务器使用脚本批量创建作用域
- 【zznu-2173】
- 炼数成金深入BI - Kettle 篇
- 基于51单片机+ULN2003控制步进电机S曲线加减速
- 解决“fatal: 'origin' does not appear to be a git repository...”
- 【Linux杂篇】经常登录Linux,用户密码背后的知识了解一下
- 合天网安 在线实验 CTF竞赛 writeup(第七周 | 再见上传、第八周 | 随意的上传、第十三周 | simple xxe、第十五周 | 回显的SSRF)
- 寻找我梦,再见2016
热门文章
- 台式计算机无法访问网络,完美:台式计算机的解决方案无法访问Internet,但手机可以连接到wifi无线网络...
- 用python画的炫酷图形_推荐一个炫酷Python 手绘图形库
- 浙大毕业典礼上研究生替直博生哥们在线“征婚”,网友:浙大是吧?来了!...
- 什么样的命名才是合理的?谈命名的原则
- java飞行_Java飞行记录器
- DataGridView 使用精华
- 2007.5.13 祝天下所有的母亲: 节日快乐!
- Docker学习1-CentOS 7安装Docker
- VMware 8.0.2的license
- 腾讯云cos html,腾讯云COS对象存储基础设置全攻略记录