【实战项目】---P2P下载器
P2P下載器
- 1.引言
- 2.項目簡介
- 3.整體框架
- 4.服務端設計
- 5.客戶端設計
- 6.主要功能端口
- 7.httplib的處理流程:
- 8.源碼
1.引言
在校期間經常需要進行給學委,班長拷貝文件、互傳資料等工作,如果拋開一些聊天工具,如何進行彼此在線主機文件共享呢?帶著種種困惑,了解網絡傳輸以及Socket套接字編程、HTTP協議格式、CPP-httplib、分塊傳輸機制等相關技術之后,開始慢慢摸索,不斷試錯,于是乎有了這個項目。
2.項目簡介
環境:Windows10 VS2013 C/C++
- 該項目完成了一個在局域網中進行附近文件共享下載功能的工具
3.整體框架
4.服務端設計
服務器端設計:
功能:設計實現HTTP服務端程序,能夠提供瀏覽器客戶端進行文件的下載,獲取文件列表
服務端流程:
①.搭建HTTP服務器
- 1.主機配對請求處理功能
- 2.主機文件列表獲取處理功能
- 3.主機獲取數據獲取功能
②.提供附近主機配對功能
③.向附近主機提供文件列表
④.向附近主機提供文件下載功能
5.客戶端設計
功能:實現基于服務器HTTP的分塊傳輸功能實現多進程文件分塊下載功能的下載器,通過分塊傳輸提高傳輸效率
客戶端流程:
- 1.發現局域網附近共享用戶,獲取局域網中所有的IP地址信息
- 2.向獲取到的IP主機地址發送主機配對請求–獲取到配對成功的主機IP地址列表,打印配對成功的主機列表
- 3.用戶選擇想要獲取哪兒個主機的共享文件
- 4.向指定的這個主機發送文件列表獲取請求 – 獲取到主機上的共享文件列表
- 5.打印所有的文件列表,獲取文件頭部信息,主要獲取文件長度,向指定的主機發送文件數據獲取請求
- 6.若文件過大,則創建多線程進行分塊傳輸下載。
6.主要功能端口
客戶端:
服務端:
其他接口:
httplib基本使用:
1.實例化客戶端對象
2.實例化服務端對象
httplib::Server _srv;Windows下獲取網卡信息:
static bool GetAllAdapter(std::vector<Adapter> *list)7.httplib的處理流程:
搭建客戶端:
1.組織HTTP協議格式請求數據
2.搭建TCP客戶端
3.發送組織好的HTTP請求數據
4.等待服務端響應,接收服務端數據
5.對響應數據進行解析
搭建服務端:
1.搭建一個最簡單的TCP服務器
2.等待接收客戶端發送的數據
3.按照HTTP協議格式,對數據進行解析(請求方法按URL協議版本進行)
4.根據請求的資源路徑以及查詢字符串正文,進行業務描述
5.組織HTTP協議格式的響應,返回給客戶端(協議版本 狀態碼 描述)
8.源碼
點擊查看源碼(https://github.com/SJRLL/gongxiangxiazaiqi)
總結
以上是生活随笔為你收集整理的【实战项目】---P2P下载器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 求五彩连珠java代码
- 下一篇: c语言文字表达式,【原创】化学方程式配平