inet_ntop - IPv4/IPv6
アドレスをバイナリ形式からテキスト形式に変換する
#include <arpa/inet.h>
const char *inet_ntop(int af, const void *src,
char *dst, socklen_t size);
この関数は、
af
アドレスファミリーのネットワークアドレス構造体
src
を文字列に変換する。
変換結果の文字列は、
dst
が指すバッファーにコピーされる。
dst は NULL
でないポインターでなければならない。
呼び出し時に、このバッファーで利用できるバイト数を
引数
size に指定する。
inet_ntop() は
inet_ntoa(3)
関数を拡張して複数のアドレスファミリーを扱えるようにしたものである。
今後は
inet_ntoa(3)
は使わず、
inet_ntop()
を使うようにすると良いだろう。
現在サポートされているアドレスファミリーは以下の通り:
- AF_INET
- この場合 src は
(ネットワークバイトオーダーの)
struct in_addr
へのポインターとみなされ、この構造体の内容が
ドット区切りの 10
進数形式 " ddd.ddd.ddd.ddd"
の IPv4
ネットワークアドレスに変換される。
バッファー dst
は少なくとも INET_ADDRSTRLEN
バイトの長さを持たなければならない。
- AF_INET6
- この場合 src は
(ネットワークバイトオーダーの)
struct in6_addr
へのポインターとみなされ、この構造体の内容が、
(このアドレスに対してもっとも適切な)
IPv6
ネットワークアドレスの表示形式に変換される。
バッファー dst
は少なくとも INET6_ADDRSTRLEN
バイトの長さを持たなければならない。
成功すると、
inet_ntop() は
dst への (NULL でない)
ポインターを返す。
エラーがあった場合は
NULL を返し、
errno
をエラーを示す値に適切に設定する。
- EAFNOSUPPORT
-
af
がサポートされているアドレスファミリーでなかった。
- ENOSPC
- 変換されたアドレス文字列の長さが
size
で指定されたサイズを超過してしまう。
この節で使用されている用語の説明は
attributes(7) を参照のこと。
Interface |
Attribute |
Value |
inet_ntop() |
Thread safety |
MT-Safe locale |
POSIX.1-2001. POSIX.1-2008, RFC 2553
では最後の引数
size
のプロトタイプを
size_t
型と定義している。多くのシステムでは
RFC 2553
にしたがっている。 glibc
2.0 と 2.1 では
size_t だが、 glibc
2.2 以降では
socklen_t
となっている。
AF_INET6 は IPv4
がマップされた IPv6
アドレスを IPv6
形式に変換してしまう。
inet_pton(3) を参照。
getnameinfo(3),
inet(3),
inet_pton(3)
この man ページは Linux
man-pages
プロジェクトのリリース
5.10
の一部である。プロジェクトの説明とバグ報告に関する情報は
https://www.kernel.org/doc/man-pages/
に書かれている。