Я не хочу, чтобы клиент C ++ должен был опрашивать / иметь цикл while, который
постоянно проверяет данные
Кто-то ДОЛЖЕН.
Не обязательно быть вами. Я никогда не использовал boost ASIO, но он мог бы обеспечить регистрацию обратного вызова. Если да, то просто зарегистрируйте вашу функцию обратного вызова с boost, boost сделает ожидание и перезвонит вам, когда получит некоторые данные.
Другой вариант, конечно, что вы используете некоторые функции, которые являются синхронными. Как (не настоящая функция) Socket.read()
, которая блокирует поток до тех пор, пока в сокете не будут данные или он не будет закрыт. Но в этом случае вы посвящаете свою нить.
- изменить -
О самом сообщении. Просто выберите любой механизм IPC (сокеты / каналы / файлы / ...), кто-то уже описал один, я думаю. Как только вы отправляете данные, сами данные «кодируются» и «декодируются» вами, так что вы можете создать свой собственный протокол. Например. "%%<STOCK_NAME>=<STOCK_PRICE>##"
где "%%", =
и ##
(маркеры для отметки начала, середины и конца), которые вы добавляете на стороне отправителя и удаляете на стороне получателя, чтобы получить название и цену акции.
Вы можете разрабатывать протокол в зависимости от ваших потребностей. Также вы можете отправить рекомендацию о покупке / продаже или текстовые сообщения с основными новостями биржи. Пока ваш клиент и сервер понимают, как данные «кодируются», вы хороши.
Наконец, если вы хотите защитить связь (и скажете, что вы не используете какой-либо безопасный уровень (SSL)), то вы можете зашифровать данные. Но это другая глава. :)
НТН