クライアント側のバインド

バインド ハンドルは、プロトコル シーケンス、サーバー プログラム ホスト コンピューターの名前またはアドレス、およびサーバー プログラム エンドポイントで構成されます。 そのため、クライアント プログラムは、バインディングを作成するためにこの情報を取得または提供する必要があります。

クライアント プログラムで自動バインド ハンドルを使用する場合は、バインドを作成または管理するために特別なソース コードを記述する必要はありません。 クライアント スタブは、バインディングを確立して維持するために必要な RPC 関数を呼び出します。 必要な操作は、クライアントがアプリケーション構成ファイル (ACF) で自動バインド ハンドルを使用し、必要に応じてインターフェイスを設計することです。 詳細については、「自動バインド ハンドル 」を参照してください

たとえば、リモート タイムスタンプ関数を呼び出すクライアント プログラムを開発していたとします。 ここでは、スタブがすべての作業を行います。クライアントは、リモート プロシージャの関数プロトタイプを取得するために、生成されたヘッダー ファイル Auto.h のみを含める必要があります。 リモート プロシージャへのクライアント アプリケーションの呼び出しは、次の例に示すように、ローカル プロシージャの呼び出しと同様に表示されます。

/* auto handle client application (fragment) */
#include <windows.h>
#include <stdio.h>
#include <time.h>
#include "auto.h"    // header file generated by the MIDL compiler
 
 
void main(int argc, char **argv)
{
    time_t t1;
    time_t t2;
    char * pszTime;
    ...
 
    GetTime(&t1);  // GetTime is a remote procedure
    GetTime(&t2);
 
    pszTime = ctime(&t1);
    printf("time 1= %s\n", pszTime);
 
    pszTime = ctime(&t2);
    printf("time 2= %s\n", pszTime);
 
    Shutdown();    // Shutdown is a remote procedure
    exit(0);
}

前の例に示す通り、クライアント アプリケーションで RPC ランタイム ライブラリ関数を明示的に呼び出す必要は一切発生しません。 クライアント スタブによって管理されます。

アプリケーションで暗黙的または明示的なバインディング ハンドルを使用する場合、クライアントはバインディング情報を取得し、RPC 関数を呼び出してハンドルを作成する必要があります。 クライアントがバインディング情報を取得する場所は、アプリケーションの要件によって異なります。 クライアント アプリケーションをインストールするセットアップ プログラムは、作成する環境変数にバインド情報を格納できます。 また、アプリケーション固有の構成ファイルにバインド情報を保存できます。 通常、環境変数または構成ファイル内のバインド情報は文字列として格納されます。そのため、クライアント アプリケーションは文字列をバインドに変換する必要があります。 XP Windows 2000 環境では、バインド情報を Active Directory から取得できます。 詳細については、「文字列バインディングの 使用」を参照してください

ほとんどのネットワークにはネーム サービスがあります。 サーバー プログラムは、ネーム サービス データベースで自身をアドバタイズできます。 クライアントは、実行を開始するときに、ネーム サービス データベースからバインド情報を取得できます。 詳細については、「ネーム サービス データベース からのインポート」を参照してください

暗黙的ハンドルと明示的ハンドルを使用したバインドに必要な手順については、次のトピックで説明します。

これらのトピックの概要については、「クライアントと サーバーの接続」を参照してください