Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (日本語) » SQL Anywhere サーバ - プログラミング » SQL Anywhere データ・アクセス API » SQL Anywhere Embedded SQL » ライブラリ関数のリファレンス

 

db_locate_servers_ex 関数

プロトタイプ
unsigned int db_locate_servers_ex(
SQLCA * sqlca,
SQL_CALLBACK_PARM callback_address,
void * callback_user_data, 
unsigned int bitmask);
説明

TCP/IP で受信しているローカル・ネットワーク上のすべての SQL Anywhere データベース・サーバをリストして、dblocate ユーティリティによって表示される情報にプログラムからアクセスできるようにします。また、コールバック関数に渡されるアドレスの選択に使用するマスク・パラメータを提供します。

コールバック関数には、次のプロトタイプが必要です。

int (*)( SQLCA * sqlca,
a_server_address * server_addr,
void * callback_user_data );

コールバック関数は、検出されたサーバごとに呼び出されます。コールバック関数が 0 を返すと、db_locate_servers_ex はサーバ間の反復を中止します。

コールバック関数に渡される sqlca と callback_user_data は、db_locate_servers に渡されるものと同じです。2 番目のパラメータは a_server_address 構造体へのポインタです。a_server_address は sqlca.h で次のように定義されています。

typedef struct a_server_address {
    a_sql_uint32   port_type;
    a_sql_uint32   port_num;
    char           *name;
    char           *address;
    char           *dbname;
} a_server_address;
  • port_type   この時点では常に PORT_TYPE_TCP です (sqlca.h では 6 に定義されています)。

  • port_num   このサーバが受信している TCP ポート番号です。

  • name   サーバ名があるバッファを指します。

  • address   サーバの IP アドレスがあるバッファを指します。

  • dbname   データベース名があるバッファを指します。

3 つのビットマスク・フラグがサポートされています。

これらのフラグは sqlca.h で定義されており、OR を使用して併用できます。

DB_LOOKUP_FLAG_NUMERIC は、コールバック関数に渡されたアドレスがホスト名ではなく IP アドレスであることを確認します。

DB_LOOKUP_FLAG_ADDRESS_INCLUDES_PORT では、コールバック関数に渡された a_server_address 構造体内の TCP/IP ポート番号がアドレスに含まれていることを示します。

DB_LOOKUP_FLAG_DATABASES は、検出されたデータベースごと、または検出されたデータベース・サーバごと (データベース情報の送信をサポートしていない バージョン 9.0.2 以前のデータベース・サーバの場合) にコールバック関数が 1 回呼び出されることを示します。

正常終了すると 1 を返し、それ以外は 0 を返します。

詳細については、サーバ列挙ユーティリティ (dblocate)を参照してください。