Базовый клиент-серверный дизайн для постоянных соединений? - PullRequest
2 голосов
/ 03 апреля 2010

Вот насколько я понимаю:

  1. Клиент и сервер устанавливают соединение

  2. Клиент отправляет данные сервера

  3. Сервер интерпретирует данные, отправляет данные клиента

  4. И так далее, пока клиент не отправит сигнал отключения.

Мне просто интересно узнать о реализации. Шаг 2 и 3 сбивают меня с толку, может быть, я слишком усложняю это. Можно ли интерпретировать данные больше, чем гигантский оператор switch?

Какие-нибудь хорошие книги по дизайну клиент / сервер? Говоря конкретно о многопоточных серверах, масштабируемости и структуре сообщений (байт 1 = информация заголовка, байт 2 = бла-бла и т. Д.)? Специально ориентирован на C ++.

1 Ответ

1 голос
/ 04 апреля 2010

Я бы подумал о пакетах, типах пакетов, идентификаторах пакетов и хранилищах обработчиков типов пакетов.

Идея состоит в том, чтобы отправлять данные только в виде пакетов. Каждый пакет содержит свой идентификатор (необязательно) и тип в начале (длина также будет полезна). На каждой стороне соединения имеется несколько обработчиков пакетов, каждый из которых обрабатывает пакеты соответствующего типа (читает и интерпретирует). Если вы отправляете длину пакета, вы можете даже пропустить поддерживаемые типы пакетов, допускающие разные версии клиента и сервера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...