创建一个简单的Linux API

问题描述:

我在OpenWRT风格的路由器上有一个简单的应用程序。它目前用C++编写。路由器(嵌入式Linux)具有非常有限的磁盘空间和RAM。例如,没有足够的空间来安装Python。创建一个简单的Linux API

所以,我想通过网络来控制这个守护程序。我已经阅读了一些关于创建套接字和收听活动端口的教程。但是我还没有能够将流程整合到C++类中。而且我还无法弄清楚如何解码收到的信息,或者如何发送回复。

我读过的所有教程都是死路一条,它们告诉你如何制作一个基本上只是阻塞的服务器,直到它接收到某些东西,然后在有东西时返回一条消息。

有没有更高级别的东西可以用于这种事情呢?

听起来像你所问的是“我如何构建一个简单的网络服务来接受来自客户端的请求并做出响应?这里有很多部分 - 你如何构建服务框架,如何对请求进行编码和解码,如何处理请求以及如何将它们结合在一起?

这听起来像你有第一个和最后一个部分的问题。有两种组织这种简单服务的基本方法 - 线程方法和事件方法。

在线程方法中,为每个传入连接创建一个线程。该线程从该连接(文件描述符)读取消息(请求),处理它们并写回响应。当连接消失时,线程退出。你有一个主要的“监听”线程,它接受传入连接并创建新线程来处理每个连接。

在事件方法中,每个传入请求都成为一个事件。然后你有事件处理程序来处理这些事件,并发回回应。重要的是事件处理程序不会立即阻止并完成,否则服务可能会锁定。您的程序有一个主事件循环,用于等待传入事件(通常阻止一个pollselect调用),并根据需要读取和分派每个事件。

+0

你给出了一个很好的答案,虽然我希望能有一些可用的东西,这将节省我一些建设工作。我希望它像iOS那样抽象了URL请求,并且或多或少地处理了这些请求。我觉得我会成为第1000个执行这样的事情的人。 – napierzaza

我用opkg安装了python-mini软件包,它具有套接字和线程支持。 工作像WRT160NL与魅力回火/ 10.03.1。