[Фактическое] --- Проект Загрузчик P2P

1. Введение

Часто нужно учиться в течение школьного комитета, лидер команды, чтобы скопировать файлы, передать каждую информацию о заданиях и т.д., если вы отложить некоторые инструменты чата, как провести друг с другом в Интернет файлообменный его? Со всей путаница, понимание сетевой передачи и сокета программирования, после соответствующего формата технического протокола HTTP, CPP-HTTPLIB, механизм передачи блока, медленно нащупывает, пробы и ошибки, и, таким образом, с этим проектом.

2. Проект

Окружающая среда : Windows 10 VS2013 C / C ++

  • Проект был завершен в течениеРядом загрузки общего доступа к файлам локальной сетиинструмент Функция
  1. Хост может запустить инструмент поиска, чтобы соответствовать локальной сети, локальной сети, чтобы получить онлайн-список хостов;
  2. Вы можете получить список информации (файлы в указанной общей папке) файл указует хост совместно;
  3. Процесс Multi-блок может загрузить указанный файл на указанном хосте, чтобы повысить эффективность передачи.

3. Общая структура

Here Вставка рисунка Описание
Here Вставка рисунка Описание

4. Конструкция сервера

Серверная конструкция:

Функция : разработка и реализация программы HTTP - сервер , который предоставляет клиент браузера для загрузки файлов, доступ к списку файлов

Серверный процесс:

①. Сервер Для сборки HTTP

  • Обработка запросы сопряжения 1. Хост
  • 2. Узел обработки получения списка файлов
  • 3. Хост функция сбора данных приобретения

②. При условии , рядом с хост - спариванием

③. Предоставьте список файлов в соседний хост

④. Для обеспечения загрузки файла функции близлежащего хоста

5. Конструкция клиента

Функция : HTTP - сервер для достижения многофункционального процесса передачи блока загрузки файла блок менеджер Функционирует, повысить эффективность передачи блочной передачи

Клиент процесс:

  • 1. Откройте близлежащих пользователей локальной сети к акции, получить всю информацию в IP-адрес локальной сети
  • 2. Отправить запрос на хост спаривания для получения IP-адреса хоста - получить список IP-адресов для хостов успешного матча, спаривание успешных распечатать список хостов
  • 3. Выберите пользователя для совместного использования файлов, где вы хотите, чтобы получить множество
  • 4. Получение списка на указанный хост отправляет запрос на файл - получить список общих файлов на хосте
  • 5. Вывести список всех файлов, получить информацию о файле заголовка, длина основного сбора документов, запрос на получение к указанному узлу передачи данных файла
  • 6. Если файл слишком велик, а затем создать многопоточную загрузку блочную передачи в.

6. Основная функция порта

Клиент :

  1. Обеспечение клиентов хоста сопряжению
bool GetonlineHost()
  1. Обеспечивает функцию сбора списка файлов клиента
bool GetShareList(const std::string &host_ip)
  1. Обеспечивают функцию файла загрузки клиента (Нормальная передача загрузить блок загрузки &&)
//普通下载
bool DownloadFile(const std::string &host_ip, const std::string& filename)
//分块传输下载
bool RangeDownload(const std::string &host_ip, const std::string &filename)

Сервер :

  1. Обеспечьте функцию соответствия, чтобы обнаружить поблизости хоста локальной сети
static void HostPair(const httplib::Request &req, httplib::Response &rsp)
  1. Получает указанные хосты могут предоставить функции общего списка файлов
	//获取共享文件列表,在主机上设置一个共享目录,凡是这个目录下的文件都是要给别人共享的
	static void ShareList(const httplib::Request &req, httplib::Response &rsp)
  1. Обеспечить загрузку по указанной указанным хостам функции общего доступа к файлам
static void Download(const httplib::Request &req, httplib::Response &rsp)

Другие интерфейсы :

HTTPLIB основное использование:
1. Примеры объекта клиента

httplib::Client cli(buf, P2P_PORT); //实例化httplib客户端对象

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 - адрес выполняется в версии протокола) в
соответствии с запросом ресурса и строку запроса пути текст, описание службы
в ответ на ткань 5. формате протокола HTTP, вернулся к (версии кода состояния описание протокола) клиент

8. Источник

Нажмите, чтобы просмотреть исходный код (https://github.com/SJRLL/gongxiangxiazaiqi)

Опубликовано 57 оригинальные статьи · вона похвала 301 · просмотров 40000 +

рекомендация

отblog.csdn.net/L19002S/article/details/104942981