GETHOSTBYNAME

Section: C Library Functions (3)
索引 jman

BSD mandoc
 

索引

名称

gethostbyname gethostbyname2 gethostbyaddr gethostent sethostent endhostent herror hstrerror - ネットワークホストのエントリの取得  

索引

ライブラリ

Lb libc  

索引

書式

In netdb.h Vt extern int h_errno ; Ft struct hostent * Fn gethostbyname const char *name Ft struct hostent * Fn gethostbyname2 const char *name int af Ft struct hostent * Fn gethostbyaddr const char *addr int len int type Ft struct hostent * Fn gethostent void Ft void Fn sethostent int stayopen Ft void Fn endhostent void Ft void Fn herror const char *string Ft const char * Fn hstrerror int err  

索引

解説

Fn gethostbyname , Fn gethostbyname2 , Fn gethostbyaddr 関数はそれぞれ、次に示す構造を持つオブジェクトへのポインタを返します。 構造体には、名前またはアドレスによって参照されるインターネットホストが 記述されていて、ネームサーバ named(8) から、または /etc/hosts にある行の内訳フィールドから得られた情報を含んでいます。 ローカルのネームサーバが実行されていない場合、これらのルーチンは /etc/hosts を検索します。
struct  hostent {
        char    *h_name;        /* ホストの正式名 */
        char    **h_aliases;    /* 別名リスト */
        int     h_addrtype;     /* ホストアドレスタイプ */
        int     h_length;       /* アドレスの長さ */
        char    **h_addr_list;  /* ネームサーバからのアドレスリスト */
};
#define h_addr  h_addr_list[0]  /* アドレス、後方互換用 */

この構造体のメンバは次のとおりです。

h_name
ホストの正式名。
h_aliases
ホストの別名 (エイリアス) のヌルで終わる配列。
h_addrtype
返されるアドレスのタイプであり、通常は AF_INET
h_length
アドレスのバイト数による長さ。
h_addr_list
ホストのネットワークアドレスのヌルで終わる配列。 ホストアドレスはネットワークバイトオーダで返されます。
h_addr
h_addr_list にある最初のアドレスであり、後方互換用。

ネームサーバを使用する場合、名前がドットで終わっていない時は Fn gethostbyname および Fn gethostbyname2 は名前が付いたホストを、現在のドメインと親のドメインから検索します。 名前にドットが含まれてなく、且つ環境変数 ``HOSTALIASES '' にエイリアスファイルの名前が含まれている場合は、 入力名に適合するエイリアスが、まずエイリアスファイルから検索されます。 ドメイン検索の手続きとエイリアスファイルの書式については、 hostname(7) を参照してください。

Fn gethostbyname2 関数は Fn gethostbyname の発展型で、 AF_INET 以外のアドレスファミリ、たとえば AF_INET6 での検索を可能にするためのものです。ただし現在は、 Fa af 引数に AF_INET を指定する必要があります。他の値を指定すると Fn gethostbyname2 関数は、 h_errnoNETDB_INTERNAL に設定した後で、 NULL を返します。

Fn sethostent 関数は、問い合わせの際に接続された TCP ソケットを使いたい場合に使用できます。 Fa stayopen フラグが 0 でなければ、 TCP によってすべての問い合わせをネームサーバに送り、 Fn gethostbyname , Fn gethostbyname2 , Fn gethostbyaddr のそれぞれ呼び出し後にも、接続を保持するようにオプションを設定します。 フラグが 0 の時、問い合わせは UDP データグラムを使用して 実行されます。

Fn endhostent 関数は TCP 接続をクローズします。

Fn herror 関数は診断出力にメッセージを書き出します。 診断出力は文字列パラメータ Fa s と、定数文字列 Qq Li :  と、 h_errno の値に対応するメッセージで構成されます。

Fn hstrerror 関数は、 Fa err パラメータの値に対応するメッセージテキストの 文字列を返します。  

索引

関連ファイル

/etc/hosts
/etc/host.conf
/etc/resolv.conf

 

索引

診断

Fn gethostbyname , Fn gethostbyname2 , Fn gethostbyaddr のエラー状態は、 NULL ポインタが返ることで示されます。その場合は外部整数 h_errno をチェックすることにより、 一時的なエラーであるのか、 無効または未知のホスト名を指定したためかを判断できます。 Fn herror ルーチンによって、エラーを記述するエラーメッセージを表示できます。 引数 Fa string は NULL でなければ表示され、後にコロンとスペースが続きます。 エラーメッセージが終端の改行とともに印刷されます。

変数 h_errno は次の値を取り得ます。

HOST_NOT_FOUND
指定した名前のホストが未知です。
TRY_AGAIN
これは通常は一時的なエラーで、ローカルサーバが公式サーバ から応答が得られなかったことを意味します。しばらくして再度試みると成功する 場合があります。
NO_RECOVERY
なんらかの予期しないサーバエラーが発生しました。 これは回復不能なエラーです。
NO_DATA
要求された名前は有効ですが、IP アドレスがありません。 これは一時的なエラーではありません。 指定したホスト名がネームサーバには知られているにもかかわらず、 対応するアドレスがないという意味です。 このネームサーバに対して同じドメイン名で別なタイプの要求を行うと、 回答が得られるかもしれません。 たとえばメールフォワーダがそのドメインに登録されている場合があります。

 

索引

関連項目

getaddrinfo(3), resolver(3), hosts(5), hostname(7), named(8)  

索引

警告

ネームサーバは検索せずに /etc/hosts だけを検索するルーチンを使用するように libc(3) が構築された場合、 Fn gethostent 関数が定義され、 Fn sethostent および Fn endhostent が再定義されます。

Fn gethostent 関数は、 /etc/hosts ファイルの次の行を読み込みます。 この際、必要ならばファイルをオープンします。

Fn sethostent 関数はファイル /etc/hosts をオープンもしくはリワインドします。 Fa stayopen 引数が 0 でなければ、 Fn gethostbyname , Fn gethostbyname2 , Fn gethostbyaddr のそれぞれの呼び出しの後、ファイルはクローズされません。

Fn endhostent 関数はファイルをクローズします。  

索引

歴史

Fn herror 関数は BSD 4.3 で登場しました。 Fn endhostent , Fn gethostbyaddr , Fn gethostbyname , Fn gethostent , Fn sethostent 関数は BSD 4.2 で登場しました。 Fn gethostbyname2 関数は BIND バージョン 4.9.4 ではじめて登場しました。  

索引

バグ

これらの関数は静的データ記憶域を使用します。 後でこのデータを使う必要がある場合は、以後のこれらの関数呼び出しで データが上書きされる前に、コピーして保存する必要があります。 なお、アドレスデータとして受け入れるのは現在、 インターネットアドレスフォーマットだけです。


 

索引

Index

名称
ライブラリ
書式
解説
関連ファイル
診断
関連項目
警告
歴史
バグ

jman



Time: 07:06:52 GMT, January 12, 2009