gethostbyname() - 名前によるホスト・エントリーの取得

標準

標準/拡張機能 C/C++ 依存項目

XPG4.2
Single UNIX Specification、バージョン 3

両方  

形式

X/Open:
#define _XOPEN_SOURCE_EXTENDED 1
#include <netdb.h>
extern int h_errno;

struct hostent *gethostbyname(const char *name);
バークレー・ソケット:
#define _OE_SOCKETS
#include <netdb.h>

struct hostent *gethostbyname(char *name);

機能説明

gethostbyname() 呼び出しは、存在すれば、ネーム・サーバーを介してホスト名を解決しようとします。ネーム・サーバーが存在しない場合、gethostbyname() は、 一致するホスト名が検出されるか、または EOF マーカーに達するまで、ローカル・ホスト・テーブルを検索します。
パラメーター
説明
name
ホスト名。

gethostbyname() 呼び出しは、呼び出しで指定されたホスト名用の hostent 構造体へのポインターを戻します。

gethostent()、gethostbyaddr()、および gethostbyname() は、いずれも同じ 静的領域を使用して hostent 構造体を戻します。この静的領域は、これらの次の関数が同じスレッドで呼び出されるまで有効です。

gethostbyname() にネーム・サーバーをバイパスさせ、代わりにローカル・ホスト・テーブルを使用してホスト名を解決させるには、使用しているソース・プログラムにソケット関連の組み込みファイルを組み込む前に、 RESOLVE_VIA_LOOKUP シンボルを定義する必要があります。

ネーム・サーバーが存在しないか、または RESOLVE_VIA_LOOKUP オプションが有効な場合は、 X_SITE 環境変数を使用して、さまざまなローカル・ホスト・テーブルを指定し、初期化中に z/OS グローバル・リゾルバーに提供されたローカル・ホスト・テーブルをオーバーライドすることができます。
注: これらのローカル・ホスト・テーブルまたは環境変数について詳しくは、「z/OS V2R2.0 Communications Server: IP 構成ガイド) を参照してください。

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 内で gethostbyname() を呼び出すとき、この関数を 使用します。この関数は、h_errno 変数のスレッド固有の値へのポインターを戻します。

C++ の特殊な動作: C++ でこの関数を使用するには、_XOPEN_SOURCE_EXTENDED 1 フィーチャー・テスト・マクロを 使用する必要があります。
注: gethostbyaddr() および gethostbyname() 関数は Single UNIX Specification、バージョン 3 の obsolescence に既に移動されていて、将来のバージョンで廃止する可能性があります。移植性の観点からは、getaddrinfo() および getnameinfo() 関数が推奨されます。

戻り値

戻り値は、以降の呼び出しで上書きされる静的データを指します。hostent 構造体へのポインターは、正常終了を示します。 NULL ポインターは、エラーまたはファイルの終わり (EOF) を示します。

X/Open で正常に実行されない場合、gethostbyname() は、以下のような値のいずれかに h_errno を設定します。
エラー・コード
説明
HOST_NOT_FOUND
ホストが不明である。
NO_DATA
サーバーは、要求と名前を認識したが、使用可能なアドレスがない。ネーム・サーバーへの別の要求の型が応答を返す。
NO_RECOVERY
リカバリーできない、予期しないサーバー障害が発生した。
TRY_AGAIN
サーバーからの応答がないような、一時エラー。情報は現在使用可能でないが、後に可能になることを示す。

関連情報