Эффективные типы пакетов / протокол передачи - PullRequest
1 голос
/ 21 января 2011

Используя boost :: asio в C ++, я пытаюсь определить лучший способ шифрования пакетов в моей программе.Я думал о том, чтобы определить пакеты самостоятельно по номеру типа, каждый с различными фиксированными размерами пакетов.Система считывает заголовок (тип и количество записей для списков данных) и создает соответствующую структуру для получения данных, а затем реагирует в соответствии с полученными данными.

Однако, когда я смотрю на этот методИнтересно, есть ли более простой способ сделать это, не жертвуя эффективностью?

Эти пакеты должны передаваться между различными приложениями через TCP.В идеале я нацеливаюсь на то, чтобы оба приложения использовали как можно меньшую полосу пропускания и процессор, а также максимально простую модификацию.Есть предложения?

Ответы [ 2 ]

1 голос
/ 21 января 2011

TCP использует потоков данных, а не пакетов. Я настоятельно рекомендую думать о вашей передаче данных как о потоке данных, а не о последовательности пакетов. Это облегчит абстрагирование в ваш код. Взгляните на Boost.Serialization или Google Протокол буфера .

Boost.Asio имеет шифрование SSL возможности , поэтому шифрование потока данных тривиально. Он также имеет пример с использованием сериализации.

0 голосов
/ 21 января 2011

Рассматривали ли вы google protobufs ? Хотя он на самом деле не выполняет шифрование (вам придется делать это самостоятельно), он предоставляет способ кодирования структурированных данных, позволяющий эффективно отправлять их по проводам. Кроме того, для этого существует множество языковых привязок (C ++, Java и Python, в верхней части моей головы).

...