inet_pton - ライブラリコールの説明 - Linux コマンド集 一覧表
名前
inet_pton - ネットワークアドレス構造体を生成する
書式
#include <sys/types.h>#include <sys/socket.h>#include <arpa/inet.h>
int inet_pton(int af, const char *src, void *dst);
説明
この関数は文字列 srcを、アドレスファミリー afのネットワークアドレス構造体に変換し、 dstにコピーする。
inet_pton(3) は inet_addr(3)関数を拡張して複数のアドレスファミリーを扱えるようにしたものである。 今後は inet_addr(3)は使わず、 inet_pton(3) を使うようにすると良いだろう。 現在サポートされているアドレスファミリーは以下の通り:
- AF_INET
- この場合 srcはドット区切り 4 分割形式 "ddd.ddd.ddd.ddd" の IPv4 ネットワークアドレス文字列へのポインタとみなされる。 このアドレスは "struct in_addr"に変換されて dstにコピーされる。 dstは "sizeof(struct in_addr)"バイトの長さを持たなければならない。
- AF_INET6
-
この場合
srcは IPv6 ネットワークアドレスの文字列へのポインタとみなされる。
IPv6 アドレスの形式はどんなものでも構わない。
このアドレスは
"struct in6_addr"に変換されて
dstにコピーされる。
dstは
"sizeof(struct in6_addr)"バイトの長さを持たなければならない。
古い 16 進形式や 8 進形式のいくつかは、 AF_INETのアドレスに指定することができない (inet_pton()はこれらの形式を拒否する)。
返り値
afがサポートされているアドレスファミリーでない場合には inet_pton()は負の値を返し、 errnoに EAFNOSUPPORTを代入する。 srcが指定されたアドレスファミリーに対する 正しいネットワークアドレス表記でない場合には inet_pton()は 0 を返す。 ネットワークアドレスの変換に成功した場合には inet_pton()は正の値を返す。
準拠
POSIX.1-2001.
関連項目
バグ
AF_INET6は IPv4 アドレスを認識しない。
そのような場合には IPv6 に明示的にマップされた IPv4 アドレスを
srcに与えなければならない。