2016-10-07 11 views
0

多くのクライアントに同じオブジェクトを送信できるサーバーを設計する必要があります。クライアントは、データベース内の何かを更新したい場合、サーバーに何らかの要求を送るかもしれません。混乱しているクライアントが頻繁にメッセージを送信しないマルチクライアントサーバーアプリケーションを設計する

もの:

  1. 私のサーバーは、プログラム開始する必要があります(私はいくつかの操作を実行すると「結果」をもたらすが、これはクライアントに送信されます)。

  2. 私のサーバーは、クライアントからの着信接続を受け入れる必要がある場合はそれを受け入れ、「結果」の送信を開始する必要があります。

  3. サーバーは、できるだけ多くのクライアントを受け入れる必要があります(100以下)。

  4. 私の「結果」を保護する必要があります。私はいくつかの人が私の '結果'を取って、私のプログラムロジックがどのように見えるかを見てほしくない。

    私は1つのスレッドと思っています。ポイント2は、別のスレッドであり、ポイント3を提供するためにスコープ内に複数のスレッドを作成します。ポイント4は、サーバーではなく「結果」をシリアライズしながら、アプリケーションロジックによって取得される必要があります。

    悪い考えですか?もしそうなら、どこで改善できますか?スレッド上のすべての接続を置く

おかげ

答えて

1

は非常に悪いです、そして初心者が行うことを明らかによくある間違いです。すべてのスレッドは約1MBのメモリを必要としますが、これは正当な理由がないためプログラムを過剰に使用します。私は前に全く同じ質問をしましたが、私はa very good answerを得ました。私はboost ASIOを使用しました。サーバー/クライアントプロジェクトは数か月後に終了しました。これは現在、美しく実行中のプロジェクトです。

あなたのプログラムがコンパイルされているので、(接続を保護するために)C++とSSLを使用すると、誰もあなたのロジックを見ません。しかし、その場合は、独自の通信プロトコル/シリアライズを作成する必要があります。

+0

独自の通信プロトコル/シリアル化を書く必要があるのはなぜですか?私はブーストシリアル化とTCP/IPを使用する予定です。これらを使うと何がうまくいかないでしょうか? – Kid

+0

@Kidあなたは誰もあなたが使っているロジックを知りたくないと言った。それが唯一の理由です。これはあなたが引き離したい "秘密"のレベルによって決まります。 –

+0

私の質問がばかだと私を許してください。私は暗号化をブーストSSLを使って行いますが、tcp/ipを使用しています。私がTCPに固執しているのは、パケットの配送とその注文を処理するからです。 – Kid

関連する問題