Для ясности позвольте мне сначала описать вашу топологию.
Вы создаете сервер и несколько клиентов, клиенты могут загружать файлы с помощью p2p. И вы хотите, чтобы клиент мог загружать файл как с сервера, так и с других клиентов, чтобы увеличить скорость.
Во-первых, загрузка через bt может улучшить вашу скорость, но ограничение исходит от вашего интернет-провайдера. Если вы покупаете только полосу пропускания 100 МБ, вы не можете получить более высокую скорость, чем она.
Во-вторых, если эта топология может вам помочь, то вы можете построить такие системы.
-
Требуется обход NAT, это основная c связь p2p. Вам может понадобиться natpmp, upnp или ICE. Поскольку у вас есть сервер, возможно, ICE лучше.
LSD и DHT помогут вам найти других клиентов.
протокол связи между узлами необходимо для подключения к другим одноранговым узлам и загрузки файлов.
Существует проект с открытым исходным кодом под названием libtorrent, который может вам помочь. Он строит всю систему, вы можете использовать ее или построить свою собственную, изучив ее.
Что касается загрузки как сервера форм, так и клиентов, там должен быть дизайн однорангового менеджера, что относительно сложно, и я не могу короче, вам нужно сделать много примеров и оптимизацию самостоятельно.