@Mars36

Как правильно организовать безсерверный p2p мессенджер и правильно работать с большими проектами?

Хочу сделать p2p чатик в виде "пет проекта", и за одно научится работать с большими(относительно?) проектами и понимать их устройство, например если есть какие то не стандартные решения, почему сделали именно так, а не иначе. Для одноранговых решений я нашел такую интересную вещь как DHT(Kademlia dht). Библиотек построенных на Qt мне не удалось найти в принципе. Из других реализаций DHT на С++ есть openDHT, который как я понимаю работает только под linux из за таких зависимостей как msgpack-c, GnuTLS и т.д. Так же есть madesave-dht, но он больно древний и последний коммит на гите был более 10 лет назад. Решил посмотреть как это все работает в других крупных проектах, т.к. заодно хотел попробовать научится разбираться в устройстве крупных проектов. Решил посмотреть на qTox(https://github.com/qTox/qTox). В составе исходников есть папка "core" в которой как я подумал есть реализация DHT и работа с сетью, я подумал, что смогу просто вытащить эту папку с исходниками ядра этого мессенджера и просто прикручивать к нему свои модули и интерфейс. Но посмотрев исходники чуть более подробно я понял, что просто так взять и использовать ядро не получится, т.к. оно очень тесно вплетено в остальные модули, например использует объекты из других модулей(toxString и прочие), и нужно либо писать их аналоги, и даже если попробовать написать их аналоги, то я не знаю хватит ли у меня для этого скилов, да и сколько времени это займет? Если попробовать взять все необходимые ядру зависимости, то это уже будет более 90% исходников qTox и в чем тогда смысл?)

В конечном итоге хочу узнать, если ли какие то библиотеки для реализации одноранговых сетей для передачи коротких сообщений, файлов.

P.S. На удивление такая популярная тема, а так мало реализаций, меня преследует мысль, что я плохо искал, но потратив дня два на поиски, какого то готового варианта, я почти ничего не нашел, быстро пробежавшись по исходникам других месседжеров я понял, что у них реализации сетевой части собственные и просто так взять и достать такие реализации не получится, т.к. объем слишком большой и в таких реализация очень специфических вещи, которые нужны только в проектах для которых писались такие реализации.
  • Вопрос задан
  • 125 просмотров
Пригласить эксперта
Ответы на вопрос 1
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы