@Serjio-Grig
Тот самый никто (=

Несколько вопросов по сетевому программированию в C++?

Здравствуйте. Имеется несколько вопросов по сетевому программированию в C++.

1. Криптография данных.
Для передачи пакетов данных используется TCP. Перед отправкой данных планируется шифровать передаваемые данные. Какой наиболее надежный алгоритм шифрования по ключу посоветуете в C++? Шифрование будет end-to-end между каждым сервером, при установке соединения между серверами они получают рандомный ключ для дешифровки данных ДЛЯ ТЕКУЩЕГО соединения.

2. Как посоветуете оптимизировать работу?
Сами сервера работают с TCP (сырые сокеты). Какой подход лучше использовать для обработки данных, поступающих с сервера А на сервер Б?
Например, пришла информация с сервера А на сервер Б с какой-то платёжной операцией. С данными поработали, отослать ответ необходимо именно тому человеку, который эту информацию сообщил, но очереди для этого не сильно подойдут — желательно использовать по процессу/потоку для каждого соединения. Что лучше? Или, вернее, КАК реализовать?

Знаю, вопросы могут показаться глупыми, но прошу не кидать тапками, а дать наставление и направить на путь истинный.
  • Вопрос задан
  • 214 просмотров
Решения вопроса 1
@res2001
Developer, ex-admin
1. Используйте openssl, там уже все придумано за вас. Если делаете финансовое ПО для работы в РФ, то видимо потребуется ГОСТовое шифрование. Такие варианты openssl то же есть, с сертификацией и прочими плюшками, конечно не бесплатно.
2.Тут трудно что-то сказать не зная специфики задач, которые вы будете решать.
В общем случае, поток на соединение - если соединений относительно не много; иначе - асинхронный ввод/вывод. Но могут быть и другие факторы, влияющие на выбор архитектуры.
В асинхронном варианте сам ввод/вывод можно делать в одном потоке, а для обработки держать пул потоков обработчиков. Задания от потока ввода/вывода к обработчикам передавать через очередь, результаты аналогично.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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