inet_pton

Autres langues

Langue: ja

Autres versions - même langue

Version: 2000-12-18 (fedora - 25/11/07)

Section: 3 (Bibliothèques de fonctions)

名前

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 にコピーされる。 dstsizeof(struct in_addr) バイトの長さを持たなければならない。
AF_INET6
この場合 src は IPv6 ネットワークアドレスの文字列へのポインタとみなされる。 IPv6 アドレスの形式はどんなものでも構わない。 このアドレスは struct in6_addr に変換されて dst にコピーされる。 dstsizeof(struct in6_addr) バイトの長さを持たなければならない。

古い 16 進形式や 8 進形式のいくつかは、 AF_INET のアドレスに指定することができない (inet_pton() はこれらの形式を拒否する)。

返り値

af がサポートされているアドレスファミリーでない場合には inet_pton() は負の値を返し、 errnoEAFNOSUPPORT を代入する。 src が指定されたアドレスファミリーに対する 正しいネットワークアドレス表記でない場合には inet_pton() は 0 を返す。 ネットワークアドレスの変換に成功した場合には inet_pton() は正の値を返す。

準拠

POSIX.1-2001.

バグ

AF_INET6 は IPv4 アドレスを認識しない。 そのような場合には IPv6 に明示的にマップされた IPv4 アドレスを src に与えなければならない。

関連項目

inet_ntop(3)