gethostbyaddr() - アドレスによるホスト・エントリーの取得
標準
| 標準/拡張機能 | C/C++ | 依存項目 |
|---|---|---|
XPG4.2 |
両方 |
形式
X/Open:
#define _XOPEN_SOURCE_EXTENDED 1
#include <netdb.h>
extern int h_errno;
struct hostent *gethostbyaddr(const void *address, size_t len, int type);
バークレー・ソケット:
#define _OE_SOCKETS
#include <netdb.h>
struct hostent *gethostbyaddr(char *address, int address_len, int domain);
機能説明
gethostbyaddr() 呼び出しは、存在すれば、ネーム・サーバーを介してホスト・アドレスを解明しようとします。
gethostbyaddr() は、一致するホスト・アドレスが検出されるか、または EOF マーク文字に達するまでローカル・ホスト・テーブルを検索します。
- パラメーター
- 説明
- address
- ホストのアドレスを含む構造体へのポインター (AF_INET では符号なし long 型)。
- address_len
- address のサイズ (バイト単位)。
- domain
- サポートされるアドレス・ドメイン (AF_INET)。
gethostbyaddr() にネーム・サーバーをバイパスさせ、代わりにローカル・ホスト・テーブルを使用してホスト・アドレスを解決させるには、使用しているソース・プログラムにソケット関連の組み込みファイルを組み込む前に、 RESOLVE_VIA_LOOKUP シンボルを定義する必要があります。
X_ADDR 環境変数を使用して、さまざまなローカル・ホスト・テーブルを指定し、初期化中に
z/OS グローバル・リゾルバーに提供されたローカル・ホスト・テーブルをオーバーライドすることができます。
gethostbyaddr() 呼び出しは、呼び出しで指定されたホスト・アドレス用の hostent 構造体へのポインターを戻します。
gethostent()、gethostbyaddr()、および gethostbyname() は、いずれも同じ 静的領域を使用して hostent 構造体を戻します。この静的領域は、これらの次の関数が同じスレッドで呼び出されるまで有効です。
netdb.h 組み込みファイルは、hostent 構造体を定義し、以下のエレメントを含みます。
- エレメント
- 説明
- h_addr_list
- ホスト・ネットワーク・アドレスのゼロ終了リストへのポインター。
- h_addrtype
- 戻されるアドレスの型。現在は常に AF_INET に設定される。
- h_aliases
- ホストの代替名のゼロ終了配列。
- h_length
- アドレスのバイト長。
- h_name
- ホストの公式名。
以下の関数 (X/Open ソケットのみ) は、netdb.h で定義され、エラー時に
h_errno 戻り値を参照しようとするとき、マルチスレッドの
アプリケーションによって使用されなければなりません。
int *__h_errno(void);
また、DLL 内で gethostbyaddr() を呼び出すとき、この関数を 使用します。
この関数は、h_errno 変数のスレッド固有の値へのポインターを戻します。
C++ の特殊な動作: この関数を C++ で使用するには、_XOPEN_SOURCE_EXTENDED 1 フィーチャー・テスト・マクロを使用する必要があります。
注: gethostbyaddr() および gethostbyname() 関数は Single UNIX Specification、バージョン 3 の obsolescence
に既に移動されていて、将来のバージョンで廃止する可能性があります。移植性の観点からは、getaddrinfo() および getnameinfo()
関数が推奨されます。
戻り値
戻り値は、以降の呼び出しで上書きされる静的データを指します。hostent 構造体へのポインターは、正常終了を示します。 NULL ポインターは、エラーまたはファイルの終わり (EOF) を示します。
X/Open で正常に実行されない場合、gethostbyaddr() は、以下のようなエラーを示す
h_errno を設定します。
- エラー・コード
- 説明
- HOST_NOT_FOUND
- ホストが不明である。
- NO_DATA
- サーバーは、要求と名前を認識したが、使用可能なアドレスがない。ネーム・サーバーへの別の要求の型が応答を返す。
- NO_RECOVERY
- リカバリーできない、予期しないサーバー障害が発生した。
- TRY_AGAIN
- サーバーからの応答がないような、一時エラー。情報は現在使用可能でないが、後に可能になることを示す。