Создание простого API для Linux - PullRequest
0 голосов
/ 31 октября 2011

У меня есть простое приложение на маршрутизаторе в стиле OpenWRT.В настоящее время он написан на C ++.Маршрутизатор (встроенный Linux) имеет очень ограниченное дисковое пространство и оперативную память.Например, недостаточно места для установки Python.

Итак, я хочу управлять этим приложением-демоном по сети.Я прочитал несколько уроков по созданию сокетов и прослушиванию порта для активности.Но я не смог интегрировать поток в класс C ++.И я не смог выяснить, как расшифровать полученную информацию или как отправить ответ.

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

Есть ли что-то более высокое, что можно использовать для такого рода вещей?

Ответы [ 2 ]

1 голос
/ 01 ноября 2011

Похоже, что вы спрашиваете: «Как мне создать простой сетевой сервис, который будет принимать запросы от клиентов и что-то делать в ответ?» Здесь есть несколько частей: как вы строите сервисную среду, как вы кодируете и декодируете запросы, как вы обрабатываете запросы и как вы все это связываете?

Похоже, у вас проблемы с первой и последней частями. Существует два основных способа организации простого сервиса: потоковый и событийный.

В подходе потока вы создаете поток для каждого входящего соединения. Этот поток читает сообщения (запросы) от этого соединения (дескриптор файла), обрабатывает их и записывает ответы. Когда соединение разрывается, поток завершается. У вас есть основной поток прослушивания, который принимает входящие соединения и создает новые потоки для обработки каждого из них.

В подходе события каждый входящий запрос становится событием. Затем у вас есть обработчики событий, которые обрабатывают эти события, отправляя ответы обратно. Важно, чтобы обработчики событий НЕ блокировались и не завершались быстро, в противном случае служба может оказаться заблокированной. В вашей программе есть главный цикл обработки событий, который ожидает входящие события (как правило, блокирует один poll или select вызов) и считывает и отправляет каждое событие в зависимости от ситуации.

0 голосов
/ 30 марта 2012

Я установил пакет python-mini с opkg, который поддерживает сокеты и потоки. Работает как брелок на WRT160NL с backfire / 10.03.1.

...