名前


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)

openSUSE Logo

コンテンツ