kazmax - Linux で自宅サーバー

inet_pton - ライブラリコールの説明 - Linux コマンド集 一覧表

  1. 名前
  2. 書式
  3. 説明
  4. 返り値
  5. 準拠
  6. 関連項目
  7. バグ

名前

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に与えなければならない。