2011-10-31 78 views
0

我在OpenWRT風格的路由器上有一個簡單的應用程序。它目前用C++編寫。路由器(嵌入式Linux)具有非常有限的磁盤空間和RAM。例如,沒有足夠的空間來安裝Python。創建一個簡單的Linux API

所以,我想通過網絡來控制這個守護程序。我已經閱讀了一些關於創建套接字和收聽活動端口的教程。但是我還沒有能夠將流程整合到C++類中。而且我還無法弄清楚如何解碼收到的信息,或者如何發送回覆。

我讀過的所有教程都是死路一條,它們告訴你如何製作一個基本上只是阻塞的服務器,直到它接收到某些東西,然後在有東西時返回一條消息。

有沒有更高級別的東西可以用於這種事情呢?

回答

1

聽起來像你所問的是「我如何構建一個簡單的網絡服務來接受來自客戶端的請求並做出響應?這裏有很多部分 - 你如何構建服務框架,如何對請求進行編碼和解碼,如何處理請求以及如何將它們結合在一起?

這聽起來像你有第一個和最後一個部分的問題。有兩種組織這種簡單服務的基本方法 - 線程方法和事件方法。

在線程方法中,爲每個傳入連接創建一個線程。該線程從該連接(文件描述符)讀取消息(請求),處理它們並寫回響應。當連接消失時,線程退出。你有一個主要的「監聽」線程,它接受傳入連接並創建新線程來處理每個連接。

在事件方法中,每個傳入請求都成爲一個事件。然後你有事件處理程序來處理這些事件,併發回回應。重要的是事件處理程序不會立即阻止並完成,否則服務可能會鎖定。您的程序有一個主事件循環,用於等待傳入事件(通常阻止一個pollselect調用),並根據需要讀取和分派每個事件。

+0

你給出了一個很好的答案,雖然我希望能有一些可用的東西,這將節省我一些建設工作。我希望它像iOS那樣抽象了URL請求,並且或多或少地處理了這些請求。我覺得我會成爲第1000個執行這樣的事情的人。 – napierzaza

0

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