1.ドキュメンテーション
このドキュメントは、sdkでは一般的に使用されないいくつかの関数の機能説明です。これらの関数は、特定のシナリオにおいてプロジェクトに役立つ可能性があります。このドキュメントを読む前に、sdkの原理と統合方法をより明確に説明した、別の一般的な機能のsdkの説明をお読みください。また、高度な機能のサンプルプロジェクトも作成しましたので、「高度な機能のデモ」でプロジェクトを確認してください。
2.ポートの競合の解決
長年の観測と統計の結果、ポート競合問題は個々のクライアントデバイスでのみ発生し、発生確率は低い。 しかし、この問題を完全に解決するためには、当社の高度な機能を使用することをお勧めします。
私たちのSDKは、あなたが設定した「転送ルール」に基づいている。クライアント機器の適切なポートを開くこれにより、個々のクライアントでポートの競合が発生する確率は非常に低くなる。ポートの競合には2つのタイプがある。::
- シナリオ1:あなたが設定したポートが、個々のクライアント上の別のアプリケーションによって使用されています。忙しいその場合、ユーザーはアプリを正しく使用することができません;
- 2つ目のシナリオ:複数のアプリを持っているが同じインスタンスを使用しており、ユーザーが同じデバイスで複数のアプリを同時に開くことがある。ユーザーが最初に開いたアプリはインスタンスのすべてのポートを占有しており、2つ目のアプリはそれらのポートを開くことができずに開く。2番目のアプリは1番目のアプリを介してsdkに接続するため、2番目に開いたアプリは問題なく動作します。しかし、モバイルでは問題がある2つ目のアプリは最初のアプリを介してsdkに接続するため、最初のアプリはまだ正常で、ユーザーが2つ目のアプリを使用している間、1つ目のアプリはバックグラウンドにカットされ、しばらくすると1つ目のアプリはシステムによってハイバネーションされ、2つ目のアプリは接続できなくなる可能性があります。 この問題の解決方法はとても簡単です。コード手順は以下の通り。::
dunSetAutoChangePort(1);//競合ポートを自動的に変更するように設定する。
int ret = clinkStart(key);//start shield, システムによっては start を使用する。
// 新しい接続が必要なときに新しいポートを取得するために、以下のコードを呼び出す。
int new_tcpPort = dunGetCurrentTCPPort("127.0.10.21", 600);//新しいTCP対応ポートを取得する。
// 次に、new_tcpPortを使ってアプリケーションに接続する。
ページ 3 sdk高度な機能マニュアル
4ページ
//connect("127.0.10.21", new_tcpPort) 例えば、次のような擬似コードです。