Пример echo

02 августа 2023

ID appendix_echo_example

Пример echo демонстрирует использование IPC-транспорта.

Показана работа с основными инструментами, позволяющими реализовать взаимодействие между программами.

Пример echo описывает простейший случай взаимодействия двух программ:

  1. Программа Client передает программе Server число (value).
  2. Программа Server изменяет это число и передает новое число (result) программе Client.
  3. Программа Client выводит число result на экран.

Чтобы организовать такое взаимодействие программ, потребуется:

  1. Соединить программы Client и Server, используя init-описание.
  2. Реализовать на сервере интерфейс с единственным методом Ping, который имеет один входной аргумент – исходное число (value) и один выходной аргумент – измененное число (result).

    Описание метода Ping на языке IDL:

    Ping(in UInt32 value, out UInt32 result);

  3. Создать файлы статических описаний на языках EDL, CDL и IDL. С помощью компилятора NK сгенерировать файлы, содержащие транспортные методы и типы (прокси-объект, диспетчеры и т.д.).
  4. В коде программы Client инициализировать все необходимые объекты (транспорт, прокси-объект, структуру запроса и др.) и вызвать интерфейсный метод.
  5. В коде программы Server подготовить все необходимые объекты (транспорт, диспетчер компонента и диспетчер программы и др.), принять запрос от клиента, обработать его и отправить ответ.

Файлы примера

Код примера и скрипты для сборки находятся по следующему пути:

/opt/KasperskyOS-Community-Edition-<version>/examples/echo

Пример echo состоит из следующих исходных файлов:

  • client/src/client.c – реализация программы Client;
  • server/src/server.c – реализация программы Server;
  • resources/Server.edl, resources/Client.edl, resources/Ping.cdl, resources/Ping.idl – статические описания;
  • init.yaml – init-описание.

Сборка и запуск примера

См. "Сборка и запуск примеров".

Схема сборки примера echo выглядит следующим образом:

Вам помогла эта статья?
Что нам нужно улучшить?
Спасибо за ваш отзыв, вы помогаете нам становиться лучше!
Спасибо за ваш отзыв, вы помогаете нам становиться лучше!