Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ gethostent(3N) — NEWS-os 3.3

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

hosts(5)

resolver(3)

named(8)

GETHOSTBYNAME(3N)  —  UNIX Programmer’s Manual

名称

gethostbyname, gethostbyaddr, gethostent, sethostent, endhostent − ネットワークのホストエントリを獲得する

形式

#include <netdb.h>

extern int h_errno;

struct hostent ∗gethostbyname(name)
char ∗name;

struct hostent ∗gethostbyaddr(addr, len, type)
char ∗addr; int len, type;

struct hostent ∗gethostent()

sethostent(stayopen)
int stayopen;

endhostent()

解説

gethostbyname および gethostbyaddr はそれぞれ、次の構造体をもつオブジェクトを指すポインタを返します。 この構造体は、ネームサーバ named(8) から得た情報、または /etc/hosts ファイル中の行からの broken-out フィールドのいずれかを含みます。 ローカルなネームサーバがこれらのルーチンを実行していない場合は、 /etc/hosts ファイルを調べます。

structhostent {
char    ∗h_name;        /∗ ホストの公式名 ∗/
char    ∗∗h_aliases;    /∗ 別名リスト ∗/
int     h_addrtype;     /∗ ホストのアドレスの型 ∗/
int     h_length;       /∗ アドレス長 ∗/
char    ∗∗h_addr_list;  /∗ ネームサーバからのアドレスリスト ∗/
};
#defineh_addr  h_addr_list[0]  /∗ 旧バージョンとの互換性のためのアドレス ∗/

この構造体のメンバは、次の通りです。

h_name ホストの公式名。

h_aliases ホストの代名のゼロで終わる文字列。

h_addrtype 返されているアドレスのタイプ。現在のところ常に AF_INET。

h_length バイト単位でのアドレス長。

h_addr_list ホストのネットワークアドレスのゼロで終わる文字列。 ホストアドレスは、ネットワークのバイトオーダーで返されます。

h_addr h_addr_list 中の最初のアドレス。 これは、旧バージョンとの互換性のためのものです。

sethostent は、TCP を使用して、接続されたソケットの使用についてのリクエストを 許可します。 stayopen フラグがゼロでない値の場合、これは、TCP を使用して、 すべての照会をネームサーバへ送るためのオプション、および gethostbyname と gethostbyaddr へのそれぞれの呼び出しの後、 コネクションを保持するためのオプションを設定します。

endhostent は、TCP コネクションをクローズします。

診断

gethostbyname と gethostbyaddr からのエラーリターン状態は、ナルポインタのリターンにより示されます。 外部整数 h_errno をチェックし、それは一時的な故障であるのか、無効であるのか、 未知のホストであるあるのかを調べます。

h_errno は、次の値をもっています。

HOST_NOT_FOUNDそのようなホストは知りません。

TRY_AGAIN一般に、これは一時的なエラーであり、 ローカルサーバが正式なサーバからの応答を受信しないことを意味します。 しばらくしてから、リトライすると、成功するでしょう。

NO_RECOVERYこれは回復不可能なエラーです。

NO_ADDRESS要求された名前は有効だが、IP アドレスをもっていません。 これは、一時的なエラーではありません。 これは、ネームサーバへ、別のタイプのリクエストをすると、 答えがでることを意味します。

ファイル

/etc/hosts

関連事項

hosts(5), resolver(3), named(8)

警告

gethostent を定義し、 sethostent と endhostent を再定義したとき、 /etc/hosts ファイルを調べるためのルーチンだけを使用するために libc が構築されます。 libc はネームサーバではありません。

gethostent は、 /etc/hosts ファイルの次の行を読み込み、 必要に応じそのファイルをオープンします。

sethostent を再定義し、ファイルをオープンし、ファイルの先頭にポインタを移します。 stayopen 引数がゼロでない値の場合は、ホストのデータベースは、 gethostbyname または gethostbyaddr へのそれぞれの呼び出しの後でクローズされません。 endhostent を再定義し、ファイルをクローズします。

バグ

すべての情報は静的領域に含まれるので、それをセーブする場合は、 コピーしなければなりません。 インタネットアドレスのフォーマットだけが、 現在のところサポートされています。

NEWS-OSRelease 3.3

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026