1

Delphi と Interbase のクライアント/サーバー アプリケーションがある場合、データベースのユーザー数に基づいてアプリケーションのライセンスを取得したいと考えています。これは、商用ライセンス ソフトウェアでどのように行うことができますか? これをカバーするように見えるこれらのリスト機能は見当たりません。すべてのユーザーは、最初にデータベースにログオンします。データベースは非常に利用可能であるように思われるため、すべてのユーザー (または少なくとも管理者) に公開されます。サーバー上で実行する Delphi exe または dll も作成する必要がありますか? おそらくデータベース内の関数として、それに接続されたライセンスを使用しますか? 続行方法がわからない。ところで、Interbase は同時ユーザーにライセンスを付与しますが、サーバーにその権利を書き込んだと思いますが、同様のものが必要です。

4

1 に答える 1

1

同時クライアント接続を制御するには、サーバー側のアプリケーションが絶対に必要です。サービスとしての単純な tcp/ip ソケット サーバー (Linux のデーモン) または別の (midas?) サーバー レイヤーにすることができます。

クライアント アプリが起動すると、Session.Connect などのサーバー メソッドが呼び出されます。ここでは、アクティブな接続をカウントし、上限に達した場合は false (コードなし) を返します。アプリケーションが閉じたら、Session.Disconnect でサーバーに通知します。接続数を減らします。

また、アプリケーションのハングアップ、制御されていない再起動を処理し、このイベントをサーバー側で OnSockedDisconnect などで処理して、接続数を減らしてたとえば、ログなどに書き込みます...

もちろん、不要なゲストを避けるために、通信は暗号化 (ハンドシェイク) する必要があります。SIMカードリーダーなどでも遊べます。

この方法では、産業用 (核) レベルのセキュリティは提供されませんが、正しくコーディングされていれば、専門のハッカーでも破るのに時間がかかる可能性があります。

または、SafeNet (HASP 保護) などの既製の保護ツールを検討することもできます。

また、Firebird (およびおそらく Interbase) には DB 接続/切断トリガーがあり、ユーザーが権限を持っている場合は接続数を読み取ることができます。ただし、DB がお客様のサーバーに格納されている場合、これらは簡単に変更できます。

于 2012-06-25T13:49:01.563 に答える