Очень многое зависит от протокола обмена данными, который вы выберете для своего приложения. Если Вам удастся подстроить поток данных под http, то, наверное, есть смысл взглянуть на технологии отличные от C/C++. Например, как вариант, можно смотреть на python. Для него реализована масса http-серверов всех мастей. Данный выбор хорош тем, что, во-первых, позволит быстрее написать прототип системы, даже если Вы не знакомы с python, ведь Вам не придется изучать основы сети, а достаточно будет воспольоваться высокоуровневыми абстракциями, а это значит, что время на изучение сети можно будет потратить на дополнительный ЯП. Во-вторых, Вы сможете куда более легче и быстрее прикрутить сторонние приложения типа redis, memcached, всевозможных БД и пр. В третьих, этот вариант хорош более легким масштабированием. Вам могут также посоветовать python и сказать, что в случае необходимости критичные к скорости участки программы можно будет переписать на С, но мой Вам совет — рассматривайте этот аргумент в последнюю очередь. Но это вариант не без минусов: скорость python куда более медленней чем С/С++. На моей практике был случай, когда python просел на вычислениях в ~50 раз. Тут очень много зависит от задач сервера. Во-вторых, потребляется побольше ресурсов. Готовьтесь к приростам в 5-10раз.
Сам по себе http уже сможет гарантировать доставку данных и наложит некоторые правильные ограничения на их поток. Кроме того, он позволит несколько проще управлять кешированием, что тоже немаловажно.
Если же все-таки решите писать свой протокол на основе TCP/IP или UDP взгляните на
boost::asio. В мире С++ он зарекомендовал себя как достаточно быстрый и эффективный тулкит для работы с сетью. Документация у него средненькая, часто нужно будет бегать по форумах, но основные вещи описаны нормально. Есть примеры. Также, для более быстрого входа в тему программирования сети с опусканием нюансов очень низких уровней можно взглянуть на документацию по
сети в Qt. Там описано много нюансов, даны очень хорошие примеры, можно подсмотреть много хороших практик проектирования сетевых подсистем.
Напоследок скажу, что если на С/С++ выбор падает из-за возможно большей производительности, то не забывайте, что от сети зависит только часть производительности, но есть еще и управление памятью, ресурсами, задачами сервера (читай тредами) и т.д. Готовы ли Вы к этому?