2011-10-31 8 views
0

私はOpenWRTスタイルのルータに簡単なアプリケーションを持っています。現在C++で書かれています。ルータ(組み込みLinux)のディスク容量とRAMは非常に限られています。たとえば、Pythonをインストールするための十分な領域がありません。シンプルなLinux APIを作成する

私はこのデーモンアプリをネットワーク経由で制御したいと考えています。私は、ソケットの作成に関するいくつかのチュートリアルを読んで、活動のためにポートを聞いてきました。しかし、私はC++クラスにフローを統合することができませんでした。そして、私は受け取った情報を解読する方法や応答を送る方法を理解することができませんでした。

私が読んだチュートリアルはすべてデッドエンドです。何かを受け取るまで基本的にブロックする方法を示し、何かが得られたらメッセージを返します。

このようなことに使用できるレベルが少し上がっていますか?

答えて

1

あなたが聞いているようなサウンドは、「クライアントからの要求を受け入れて応答する簡単なネットワークサービスを構築するにはどうすればよいですか?これにはたくさんの部分があります。サービスフレームワークを構築する方法、リクエストをどのようにエンコードしてデコードするのですか、リクエストをどのように処理しますか。

最初と最後の部分に問題があるようです。このような簡単なサービスを整理するには、スレッドアプローチとイベントアプローチの2つの基本的な方法があります。

スレッドアプローチでは、着信接続ごとにスレッドを作成します。そのスレッドは、その接続(ファイル記述子)からメッセージ(要求)を読み取り、処理し、応答を書き戻します。接続がなくなると、スレッドは終了します。着信接続を受け入れ、それぞれを処理する新しいスレッドを作成するメインの「リスニング」スレッドがあります。

イベントアプローチでは、各着信要求がイベントになります。これらのイベントを処理し、応答を返すイベントハンドラがあります。イベントハンドラがブロックしてすぐに完了しないことが重要です。そうしないと、サービスがロックアップしているように見えることがあります。あなたのプログラムには、着信イベントを待つ(通常、単一のpollまたはselect呼び出しでブロックする)メインイベントループがあり、各イベントを適切に読み取り、ディスパッチします。

+0

あなたは良い答えを出していますが、私はこれを構築する上で少しの手間を省くことができるものがあることを期待していました。 URLリクエストが抽象化され、多かれ少なかれ世話をされたiOSのようなものだったと思います。私はそのようなことを実装するために1000番目の人になるような気がする。 – napierzaza

0

私は、ソケットとスレッドをサポートしているopkgでpython-miniパッケージをインストールしました。 バックファイア/ 10.03.1のWRT160NLの魅力のように機能します。

関連する問題