创建一个简单的Linux API

时间:2011-10-31 19:37:25

标签: linux api gnu router openwrt

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

所以,我想通过网络控制这个守护进程应用程序。我已经阅读了一些有关创建套接字和监听端口以获取活动的教程。但我无法将流集成到C ++类中。我无法弄清楚如何解码收到的信息,或如何发送响应。

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

是否有更高级别的东西可用于此类事情?

2 个答案:

答案 0 :(得分:1)

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

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

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

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

答案 1 :(得分:0)

我用opkg安装了python-mini包,它有socket和thread支持。 就像WRT160NL上的魅力一样,具有逆火/ 10.03.1。