私が一緒に働いている開発チームの一部は、私たちの製品と統合するためのサーバーを作成するという課題を与えられました。C SDK を提供する低レベルのセンサー デバイスがいくつかあり、データを収集する人々が使用できるようにそれらをネットワーク経由で共有したいと考えています。シンプルですね。誰かが建物の一部にある自分のマシンにセンサー デバイスを接続し、サーバーを実行して、デバイスをネットワークの他の部分と共有します。次に、クライアントがアプリケーションを介してそのサーバーに接続し、デバイスからセンサーの読み取り値を収集します。
私は単純で言語にとらわれないネットワーク プロトコルと、Java での参照実装を作成しました。問題は、C で記述された SDK のみを提供するデバイスで動作する実装を作成することです。次のことを考えていました。
- 接続されている各デバイスから最新の測定値を収集して保存するポーリング スレッドを作成します。
- マルチスレッド サーバーを使用して、ワーカー スレッドへの各着信接続をスピンオフします。
- ワーカー スレッドがセンサー読み取りの要求を受信すると、ポーリング スレッドによって収集された最新の値がクライアントに返されます。
これは、特に C では多くのスレッド化です。したがって、一般的な要件を確認すると、次のようになります。
- Windows XP/Vista、Linux、および OS X マシンで実行
- C または C++ で書かれており、私たちが持っている C SDK と対話します
- 可変数の同時接続 (ワーカー スレッド) を受け入れる
- フォークではなく、スレッドを使用する必要があります (IPC の別のレイヤーを処理したくない)
使用を開始するためのライブラリと、できればサンプルコードを提案できる人はいますか?