1

ライセンス管理ソフトウェアのサーバー側を実装したいと思います。私はLINUXOSでC++を使用しています。

ソフトウェアが起動すると、特権をチェックし、一部の機能の実行を許可/禁止するサーバーに接続する必要があります。

私の質問は、インターネットを介したクライアントとサーバー間の通信の実装についてです。

サーバーはインターネット上に静的IPを持っているので、TCP / IPソケットサーバー(IP / PORTを提​​供)に接続する単純なTCP / IPソケットクライアントを使用するだけで十分ですか?

私はソケット通信に精通していますが、インターネットを介した通信にはあまり詳しくないので、これが正しいアプローチであるかどうか、またはhttpクライアントサーバーなどの別のメカニズムを使用する必要があるかどうかが質問です。

よろしく

AFG

4

2 に答える 2

1

HTTP をトランスポートとして使用する利点は次のとおりです。

  • 正しく取得するのが簡単で、本番環境で動作する可能性が高くなります: はい、HTTP (クライアント側とサーバー側) を処理するために追加の依存関係を追加する必要がある可能性がありますが、実装して維持する必要があるさらに別の自家製プロトコルよりも望ましいです。 、下位互換性に注意する、マルチプラットフォームの問題 (エンディアンなど) に対処するなどです。実装の容易さに関しては、一般的なケースでは HTTP ベースのソリューションを使用する方がはるかに簡単です (特に、ライセンスのために REST スタイルのサービス API を構築する場合はそうです)。チェック中)。
  • より多くのヘルプが利用可能: Web の基盤としての HTTP は、今日最も広く使用されているテクノロジの 1 つです。遭遇するほとんどの (すべて?) 問題は、おそらく解決策/回避策が公開されています。
  • 暗号化は「無料」 : 暗号化は、トランスポートに関しても、エンドで実装する必要があるものに関しても、既に解決済みの問題 (HTTPS/SSL) であり、それを設定するだけの問題です。
  • サーバー認証「無料」 : HTTPS/SSL は暗号化だけでなくサーバー認証も解決するため、クライアントは実際に適切なサービスと通信しているかどうかを確認できます。
  • インターネット上での動作を保証: インターネットでは HTTP/HTTPS トラフィックが一般的であるため、ルーティングの問題や通過が困難なファイアウォールに遭遇することはありません。これは、独自のプロトコルを使用する場合に問題になる可能性があります。
  • すぐに使用できる柔軟性: サーバーと通信するクライアントに制約を課すことも少なくなります。クライアントが HTTP (およびおそらく SSL) を話すことができ、発行方法を知っている限り、多くの異なる環境でクライアントを構築するのは非常に簡単だからです。サーバーへのリクエスト (つまり、サービス API がどのように見えるか)。
  • 管理 webapp との統合が容易: ユーザーが何らかの方法でライセンスに関連付けられたアカウントを管理できるようにしたい場合 (連絡先情報の更新など)、ライセンス サーバーをそのアプリケーションと組み合わせることもできます。必要に応じて、ライセンス管理の UI 部分を同じアプリに組み込むこともできます。

最後に、(これにより、クライアント側の HTTPS/SSL 実装に追加の制約が課せられます): クライアント側の SSL 証明書を使用することもできます。これにより、基本的にクライアントをサーバーに対して認証できます。それらの使用方法に応じて、クライアント側の証明書は管理が難しくなりますが、たとえば. 有効期限が切れている、または取り消されているため、ある程度は実際に(サーバーに接続するための) ライセンスです。

于 2013-03-11T11:19:51.227 に答える
0
  • HTTP は別のメカニズムではありません。これは、TCP/IP 接続上で動作するプロトコルです。
  • インターネットは、IP トランスポートのみを使用します。その上でUDP、TCP、またはSCTPセッション(UDPはセッションの多くではない)レイヤーを使用できます。TCP が一般的な選択です。
  • ソケットはオペレーティング システム インターフェイスです。これらはほとんどのシステムでネットワークへの唯一のインターフェースですが、一部のシステムでは異なるインターフェースを使用しています。トランスポート自体とは何の関係もありません。
  • 実際には、IP アドレスはネットワーク トポロジに関連付けられているため、IP アドレスをサーバーにハードコーディングしないことを強くお勧めします。何らかの理由でネットワーク プロバイダーを変更する必要がある場合、同じ IP アドレスを取得することはできません。DNS を使用して、1 回のgethostbyname呼び出しで済みます。
  • サーバーを認証することを忘れないでください。ハードコーディングされた IP であっても、リダイレクトするのは簡単すぎます。
于 2013-03-11T10:47:53.760 に答える