0

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

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

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

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

4

2 回答 2

1

听起来您要问的是“我如何构建一个简单的网络服务来接受来自客户端的请求并做一些响应?” 这有很多部分——如何构建服务框架,如何编码和解码请求,如何处理请求以及如何将它们联系在一起?

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

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

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

于 2011-10-31T20:02:08.990 回答
0

我用 opkg 安装了 python-mini 包,它支持套接字和线程。在带有逆火/10.03.1 的 WRT160NL 上像魅力一样工作。

于 2012-03-30T19:47:51.373 回答