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