inet - ライブラリコールの説明 - Linux コマンド集 一覧表
名前
inet_aton, inet_addr, inet_network, inet_ntoa, inet_makeaddr, inet_lnaof, inet_netof - インターネットアドレス操作ルーチン
書式
#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>
int inet_aton(const char *cp, struct in_addr *inp);
in_addr_t inet_addr(const char *cp);
in_addr_t inet_network(const char *cp);
char *inet_ntoa(struct in_addr in);
struct in_addr inet_makeaddr(int net, int host);
in_addr_t inet_lnaof(struct in_addr in);
in_addr_t inet_netof(struct in_addr in);
説明
inet_aton () は、インターネットホストのアドレス cp を 「数値とドット」記法からバイナリ値へ変換する。 結果は inp が指している構造体に代入される。 返り値は、指定したアドレスが正当ならば 0 以外、不当なら 0 である。
inet_addr () 関数は、インターネットホストのアドレス cp を 「数値とドット」記法からネットワークバイトオーダでのバイナリ値へ 変換して返す。引き数が不当ならば INADDR_NONE (普通は -1) が返る。 この関数は直前で説明した inet_aton () に対して、時代遅れな インターフェースである。なぜなら -1 は正当な アドレス (255.255.255.255) だからである。 inet_aton () の方が、エラーが返ることをすっきりと示すことができる。
inet_network () 関数は、「数値とドット」記法でのアドレス cp から、ネットワーク部をホストバイトオーダで取り出す。 引き数が不当なら -1 が返る。
inet_ntoa () 関数は、 ネットワークバイトオーダでのインターネットホストアドレス in を 「数値とドット」記法へ変換する。文字列は 静的に割当てられたバッファへ返るので、 もう 1回この関数を呼ぶと文字列は上書きされる。
inet_makeaddr () 関数は、ネットワーク部 net と、 そのネットワークの中でのホストのローカルアドレス host をくっつけて、 インターネットホストのアドレスを作る。返り値はネットワークバイトオーダ、 引き数 host 、net はホストバイトオーダである。
inet_lnaof () 関数は、インターネットアドレス in のローカルホスト部を返す。この返り値はホストバイトオーダである。
inet_netof () 関数は、インターネットアドレス in のネットワーク部を返す。この返り値はホストバイトオーダである。
inet_ntoa
()、inet_makeaddr
()、inet_lnoaf
()、inet_netof
()
で使用する構造体 in_addr
は、netinet/in.h
で次のように定義されている:
struct in_addr { unsigned long int s_addr; }
i80x86 でのホストバイトオーダは LSB first (リトルエンディアン) だが、 インターネットで使われるネットワークバイトオーダは MSB first (ビッグエンディアン) である点に注意すること。
注意
アドレスに対して「数値とドット」記法を用いる場合、 それぞれの数値は先頭に 0 があれば 8 進数と解釈され、 先頭に 0x があれば 16 進数と解釈される点に注意すること。 例えば、inet_aton("226.000.000.037", &t) は 226.0.0.37 ではなく 226.0.0.31 と解釈される。
glibc での注意
inet_aton ()の宣言を有効するには、機能検査マクロ _BSD_SOURCE, _SVID_SOURCE, _GNU_SOURCE のいずれか一つを定義しなければならない。
準拠
4.3BSD. inet_addr (), inet_aton (), inet_ntoa ()は POSIX.1-2001 で規定されている。