標準
標準/拡張機能 |
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 グローバル・リゾルバーに提供されたローカル・ホスト・テーブルをオーバーライドすることができます。
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
- サーバーからの応答がないような、一時エラー。情報は現在使用可能でないが、後に可能になることを示す。