Man page - inet(3)

Packages contains this manual

Available languages:

en fr ja ru

Manual

INET

名 前
書 åŧ
čĒŦ 明
åąž 性
æē– 拠
æŗ¨ 意
例
プ ロ グ ナ ム ぎ ã‚Ŋ ãƒŧ ゚
é–ĸ 逪 項 į›Ž
こ ぎ 文 書 ãĢ つ い ãĻ

名 前

inet_aton, inet_addr, inet_network, inet_ntoa, inet_makeaddr, inet_lnaof, inet_netof - イ ãƒŗ ã‚ŋ ãƒŧ ネ ッ ト ã‚ĸ ド ãƒŦ ゚ 操 äŊœ ãƒĢ ãƒŧ チ ãƒŗ

書 åŧ

#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>

int inet_aton(const char * cp , struct in_addr * inp );

in_addr_t inet_addr(const char * cp );

in_addr_t inet_network(const char * cp );

char *inet_ntoa(struct in_addr in );

struct in_addr inet_makeaddr(in_addr_t net , in_addr_t host );

in_addr_t inet_lnaof(struct in_addr in );

in_addr_t inet_netof(struct in_addr in );

glibc 向 け ぎ 抟 čƒŊ 検 æŸģ マ ク ロ ぎ čρ äģļ ( feature_test_macros (7) 参 į…§ ):

inet_aton (), inet_ntoa ():
Since glibc 2.19:
_DEFAULT_SOURCE
In glibc up to and including 2.19:
_BSD_SOURCE || _BSD_SOURCE

čĒŦ 明

inet_aton () は 、 イ ãƒŗ ã‚ŋ ãƒŧ ネ ッ ト ホ ゚ ト ぎ ã‚ĸ ド ãƒŦ ゚ cp を 、 IPv4 ぎ 数 値 と ド ッ ト ãĢ よ る 襨 記 か ら (ネ ッ ト ワ ãƒŧ ク バ イ ト ã‚Ē ãƒŧ ダ ぎ ) バ イ ナ ãƒĒ 値 へ 変 換 し 、 変 換 įĩ 果 を inp が 指 し ãĻ い る 構 造 äŊ“ ãĢ æ ŧ į´ す る 。 ã‚ĸ ド ãƒŦ ゚ が 有 劚 ãĒ å ´ 合 0 äģĨ 外 を čŋ” し 、 そ う で ãĒ い å ´ 合 は 0 を čŋ” す 。 cp で æ¸Ą す ã‚ĸ ド ãƒŦ ゚ と し ãĻ 、 äģĨ 下 ぎ åŊĸ åŧ を ᔍ い る こ と が で き る 。

a.b.c.d

4 つ ぎ 数 字 ぎ そ れ ぞ れ は ã‚ĸ ド ãƒŦ ゚ ぎ 各 バ イ ト を į¤ē す 。 こ れ ら ぎ バ イ ト は åˇĻ か ら åŗ ぎ 順 åē ã§ バ イ ナ ãƒĒ ã‚ĸ ド ãƒŦ ゚ ãĢ 剞 り åŊ“ ãĻ ら れ る 。

a.b.c

a と b は バ イ ナ ãƒĒ ã‚ĸ ド ãƒŦ ゚ ぎ 最 初 ぎ 2 バ イ ト を į¤ē す 。 c は 16 ビ ッ ト 値 と č§Ŗ 釈 さ れ 、 バ イ ナ ãƒĒ ã‚ĸ ド ãƒŦ ゚ ぎ åŗ 側 ぎ 2 バ イ ト を 襨 す 。 こ ぎ 襨 記 は 、 (過 åŽģ ぎ も ぎ と ãĒ ãŖ た ) ク ナ ゚ B ネ ッ ト ワ ãƒŧ ク ã‚ĸ ド ãƒŦ ゚ を 指 厚 す る ぎ ãĢ 遊 し ãĻ い る 。

a.b

a は バ イ ナ ãƒĒ ã‚ĸ ド ãƒŦ ゚ ぎ 最 初 ぎ バ イ ト を į¤ē す 。 b は 24 ビ ッ ト 値 と č§Ŗ 釈 さ れ 、 バ イ ナ ãƒĒ ã‚ĸ ド ãƒŦ ゚ ぎ åŗ 側 ぎ 3 バ イ ト を 襨 す 。 こ ぎ 襨 記 は 、 (過 åŽģ ぎ も ぎ と ãĒ ãŖ た ) ク ナ ゚ A ネ ッ ト ワ ãƒŧ ク ã‚ĸ ド ãƒŦ ゚ を 指 厚 す る ぎ ãĢ 遊 し ãĻ い る 。

a

値 a は 32 ビ ッ ト 値 と č§Ŗ 釈 さ れ 、 バ イ ト ぎ 再 配 įŊŽ ã¯ 行 わ れ ず 、 そ ぎ ぞ ぞ バ イ ナ ãƒĒ ã‚ĸ ド ãƒŦ ゚ と し ãĻ æ ŧ į´ さ れ る 。

上 記 ぎ 全 ãĻ ぎ åŊĸ åŧ で 、 ド ッ ト åŒē 切 り ぎ ã‚ĸ ド ãƒŦ ゚ ぎ 各 čρ į´  は 、 10 進 数 、 8 進 数 (先 é ­ ãĢ 0 を äģ˜ ã‘ る )、 16 進 数 (先 é ­ ãĢ 0X を äģ˜ ã‘ る ) で 指 厚 で き る 。 こ れ ら ぎ åŊĸ åŧ ぎ ã‚ĸ ド ãƒŦ ゚ を ぞ と め ãĻ IPv4 ぎ 数 値 と ド ッ ト ãĢ よ る 襨 記 (IPv4 numbers-and-dots notation) と å‘ŧ ãļ 。 ぞ た 、 10 進 数 4 つ だ け を äŊŋ ãŖ た åŊĸ åŧ を IPv4 ぎ ド ッ ト åŒē 切 り ぎ 10 進 数 襨 記 (IPv4 dotted-decimal notation) と å‘ŧ ãļ ( IPv4 ぎ ド ッ ト åŒē 切 り 4 分 剞 襨 記 (IPv4 dotted-decimal notation) と å‘ŧ ãļ こ と も あ る )。

inet_aton () は æ¸Ą さ れ た 文 字 列 が æ­Ŗ 常 ãĢ č§Ŗ 釈 で き た å ´ 合 1 を čŋ” し 、 文 字 列 が 不 æ­Ŗ ãĒ å ´ 合 0 を čŋ” す (エ ナ ãƒŧ ぎ å ´ 合 ãĢ errno は ã‚ģ ッ ト さ れ ãĒ い )。

inet_addr () é–ĸ 数 は 、 イ ãƒŗ ã‚ŋ ãƒŧ ネ ッ ト ホ ゚ ト ぎ ã‚ĸ ド ãƒŦ ゚ cp を 、 IPv4 ぎ 数 値 と ド ッ ト ãĢ よ る 襨 記 か ら ネ ッ ト ワ ãƒŧ ク バ イ ト ã‚Ē ãƒŧ ダ で ぎ バ イ ナ ãƒĒ 値 へ 変 換 し ãĻ čŋ” す 。 å…Ĩ 力 が 不 æ­Ŗ ãĒ å ´ 合 、 INADDR_NONE (晎 通 は -1) を čŋ” す 。 -1 は 有 劚 ãĒ ã‚ĸ ド ãƒŦ ゚ (255.255.255.255) ãĒ ぎ で 、 こ ぎ é–ĸ 数 を äŊŋ う と 問 題 ãĢ ãĒ る か も し れ ãĒ い 。 こ ぎ é–ĸ 数 を äŊŋ う ぎ は éŋ け 、 äģŖ ã‚ り ãĢ inet_aton (), inet_pton (3), getaddrinfo (3) を äŊŋ う ぎ が よ い 。 こ れ ら ぎ é–ĸ 数 ぎ æ–š が 、 エ ナ ãƒŧ ぎ 通 įŸĨ が よ り き れ い ãĒ æ–š æŗ• で 行 わ れ る 。

inet_network () é–ĸ 数 は 、 IPv4 ぎ 数 値 と ド ッ ト ãĢ よ る 襨 記 ぎ 文 字 列 cp を 、 イ ãƒŗ ã‚ŋ ãƒŧ ネ ッ ト ã‚ĸ ド ãƒŦ ゚ と し ãĻ ぎ äŊŋ ᔍ ãĢ 遊 し た ホ ゚ ト バ イ ト ã‚Ē ãƒŧ ダ ぎ 数 値 ãĢ 変 換 す る 。 成 功 す る と 、 変 換 さ れ た ã‚ĸ ド ãƒŦ ゚ を čŋ” す 。 å…Ĩ 力 が 不 æ­Ŗ ãĒ å ´ 合 は -1 を čŋ” す 。

inet_ntoa () é–ĸ 数 は 、 ネ ッ ト ワ ãƒŧ ク バ イ ト ã‚Ē ãƒŧ ダ で æ¸Ą さ れ た イ ãƒŗ ã‚ŋ ãƒŧ ネ ッ ト ホ ゚ ト ã‚ĸ ド ãƒŦ ゚ in を 、 IPv4 ぎ ド ッ ト åŒē 切 り ぎ 10 進 数 襨 記 ぎ 文 字 列 ãĢ 変 換 す る 。 文 字 列 は 静 įš„ ãĢ 剞 åŊ“ ãĻ ら れ た バ ッ フ ã‚Ą ãƒŧ ãĢ æ ŧ į´ さ れ ãĻ čŋ” さ れ る ぎ で 、 こ ぎ 垌 で こ ぎ é–ĸ 数 を 再 åēĻ å‘ŧ ãŗ å‡ē す と 文 字 列 は 上 書 き さ れ る 。

inet_lnaof () é–ĸ 数 は 、 イ ãƒŗ ã‚ŋ ãƒŧ ネ ッ ト ã‚ĸ ド ãƒŦ ゚ in ぎ ロ ãƒŧ ã‚Ģ ãƒĢ ネ ッ ト ワ ãƒŧ ク 部 分 を čŋ” す 。 こ ぎ čŋ” り 値 は ホ ゚ ト バ イ ト ã‚Ē ãƒŧ ダ で あ る 。

inet_netof () é–ĸ 数 は 、 イ ãƒŗ ã‚ŋ ãƒŧ ネ ッ ト ã‚ĸ ド ãƒŦ ゚ in ぎ ネ ッ ト ワ ãƒŧ ク 部 分 を čŋ” す 。 こ ぎ čŋ” り 値 は ホ ゚ ト バ イ ト ã‚Ē ãƒŧ ダ で あ る 。

inet_makeaddr () é–ĸ 数 は inet_netof () と inet_lnaof () ぎ 逆 ぎ 抟 čƒŊ を 持 つ 。 ネ ッ ト ワ ãƒŧ ク į•Ē åˇ net と 、 ロ ãƒŧ ã‚Ģ ãƒĢ ã‚ĸ ド ãƒŦ ゚ host を įĩ„ ãŋ 合 わ せ ãĻ į”Ÿ 成 し た 、 イ ãƒŗ ã‚ŋ ãƒŧ ネ ッ ト ホ ゚ ト ã‚ĸ ド ãƒŦ ゚ を ネ ッ ト ワ ãƒŧ ク バ イ ト ã‚Ē ãƒŧ ダ で čŋ” す 。 host , net は と も ãĢ ホ ゚ ト バ イ ト ã‚Ē ãƒŧ ダ で あ る 。

inet_ntoa (), inet_makeaddr (), inet_lnaof (), inet_netof () で äŊŋ ᔍ す る 構 造 äŊ“ in_addr は <netinet/in.h> で æŦĄ ぎ よ う ãĢ 厚 įžŠ さ れ ãĻ い る :

typedef uint32_t in_addr_t;

struct in_addr {
in_addr_t s_addr;
};

åąž 性

こ ぎ ᝀ で äŊŋ ᔍ さ れ ãĻ い る ᔍ čĒž ぎ čĒŦ 明 は attributes (7) を 参 į…§ ぎ こ と 。

Image grohtml-36129-1.png

æē– 拠

inet_addr (), inet_ntoa (): POSIX.1-2001, POSIX.1-2008, 4.3BSD.

inet_aton () is not specified in POSIX.1, but is available on most systems.

æŗ¨ 意

x86 ã‚ĸ ãƒŧ キ テ ク チ ãƒŖ ãƒŧ で は ホ ゚ ト バ イ ト ã‚Ē ãƒŧ ダ は Least Significant Byte (LSB) first (ãƒĒ ト ãƒĢ エ ãƒŗ デ ã‚Ŗ ã‚ĸ ãƒŗ ) だ が 、 イ ãƒŗ ã‚ŋ ãƒŧ ネ ッ ト で äŊŋ わ れ る ネ ッ ト ワ ãƒŧ ク バ イ ト ã‚Ē ãƒŧ ダ は Most Significant Byte (MSB) first (ビ ッ グ エ ãƒŗ デ ã‚Ŗ ã‚ĸ ãƒŗ ) で あ る į‚š ãĢ æŗ¨ 意 す る こ と 。

inet_lnaof (), inet_netof (), inet_makeaddr () は 過 åŽģ ぎ 名 掋 で あ り 、 æ¸Ą さ れ た ã‚ĸ ド ãƒŦ ゚ が ク ナ ゚ フ ãƒĢ ネ ッ ト ワ ãƒŧ ク ã‚ĸ ド ãƒŦ ゚ (classful network addresses) で あ る と äģŽ åŽš し ãĻ å‡Ļ ᐆ を 行 う 。 ク ナ ゚ フ ãƒĢ ネ ッ ト ワ ãƒŧ ク ã‚ĸ ド ãƒŦ ゚ で は 、 äģĨ 下 ãĢ あ る よ う ãĢ 、 IPv4 ネ ッ ト ワ ãƒŧ ク ã‚ĸ ド ãƒŦ ゚ を バ イ ト åĸƒ į•Œ で ネ ッ ト ワ ãƒŧ ク 部 と ホ ゚ ト 部 ãĢ 分 剞 す る 。

Class A

(ネ ッ ト ワ ãƒŧ ク バ イ ト ã‚Ē ãƒŧ ダ ぎ ) ã‚ĸ ド ãƒŦ ゚ ぎ 最 上 äŊ ビ ッ ト が 0 ぎ å ´ 合 、 こ ぎ ã‚ĸ ド ãƒŦ ゚ į¨Ž åˆĨ と ãĒ る 。 こ ぎ ã‚ĸ ド ãƒŦ ゚ į¨Ž åˆĨ で は 、 最 上 äŊ バ イ ト が ネ ッ ト ワ ãƒŧ ク ã‚ĸ ド ãƒŦ ゚ を 襨 し 、 掋 り ぎ 3 バ イ ト が ホ ゚ ト ã‚ĸ ド ãƒŦ ゚ を 襨 す 。

Class B

(ネ ッ ト ワ ãƒŧ ク バ イ ト ã‚Ē ãƒŧ ダ ぎ ) ã‚ĸ ド ãƒŦ ゚ ぎ 上 äŊ 側 2 ビ ッ ト が バ イ ナ ãƒĒ 値 で 10 ぎ å ´ 合 、 こ ぎ ã‚ĸ ド ãƒŦ ゚ į¨Ž åˆĨ と ãĒ る 。 こ ぎ ã‚ĸ ド ãƒŦ ゚ į¨Ž åˆĨ で は 、 上 äŊ 2 バ イ ト が ネ ッ ト ワ ãƒŧ ク ã‚ĸ ド ãƒŦ ゚ を 襨 し 、 掋 り ぎ 2 バ イ ト が ホ ゚ ト ã‚ĸ ド ãƒŦ ゚ を 襨 す 。

Class C

(ネ ッ ト ワ ãƒŧ ク バ イ ト ã‚Ē ãƒŧ ダ ぎ ) ã‚ĸ ド ãƒŦ ゚ ぎ 上 äŊ 側 3 ビ ッ ト が バ イ ナ ãƒĒ 値 で 110 ぎ å ´ 合 、 こ ぎ ã‚ĸ ド ãƒŦ ゚ į¨Ž åˆĨ と ãĒ る 。 こ ぎ ã‚ĸ ド ãƒŦ ゚ į¨Ž åˆĨ で は 、 上 äŊ 3 バ イ ト が ネ ッ ト ワ ãƒŧ ク ã‚ĸ ド ãƒŦ ゚ を 襨 し 、 掋 り ぎ 1 バ イ ト が ホ ゚ ト ã‚ĸ ド ãƒŦ ゚ を 襨 す 。

ク ナ ゚ フ ãƒĢ ネ ッ ト ワ ãƒŧ ク ã‚ĸ ド ãƒŦ ゚ は įž 在 で は åģƒ æ­ĸ さ れ 、 ク ナ ゚ ãƒŦ ゚ ド ãƒĄ イ ãƒŗ 間 ãƒĢ ãƒŧ チ ãƒŗ (CIDR) ãĢ 取 ãŖ ãĻ äģŖ ã‚ ら れ た 。 CIDR で は 、 ã‚ĸ ド ãƒŦ ゚ を äģģ æ„ ぎ ビ ッ ト åĸƒ į•Œ (バ イ ト åĸƒ į•Œ で は ãĒ い ) で ネ ッ ト ワ ãƒŧ ク 部 と ホ ゚ ト 部 ãĢ 分 剞 す る 。

例

äģĨ 下 は inet_aton () と inet_ntoa () ぎ äŊŋ ᔍ 例 で あ る 。 こ ぎ よ う ãĢ 原 行 す る 。

$ ./a.out 226.000.000.037 # Last byte is in octal
226.0.0.31
$ ./a.out 0x7f.1 # First byte is in hex
127.0.0.1

プ ロ グ ナ ム ぎ ã‚Ŋ ãƒŧ ゚

#define _BSD_SOURCE
#include <arpa/inet.h>
#include <stdio.h>
#include <stdlib.h>

int
main(int argc, char *argv[])
{
struct in_addr addr;

if (argc != 2) {
fprintf(stderr, "%s <dotted-address>\n", argv[0]);
exit(EXIT_FAILURE);
}

if (inet_aton(argv[1], &addr) == 0) {
fprintf(stderr, "Invalid address\n");
exit(EXIT_FAILURE);
}

printf("%s\n", inet_ntoa(addr));
exit(EXIT_SUCCESS);
}

é–ĸ 逪 項 į›Ž

byteorder (3), getaddrinfo (3), gethostbyname (3), getnameinfo (3), getnetent (3), inet_net_pton (3), inet_ntop (3), inet_pton (3), hosts (5), networks (5)

こ ぎ 文 書 ãĢ つ い ãĻ

こ ぎ man ペ ãƒŧ ジ は Linux man-pages プ ロ ジ ェ ク ト ぎ ãƒĒ ãƒĒ ãƒŧ ゚ 5.10 ぎ 一 部 で あ る 。 プ ロ ジ ェ ク ト ぎ čĒŦ 明 と バ グ å ą 告 ãĢ é–ĸ す る 情 å ą は https://www.kernel.org/doc/man-pages/ ãĢ 書 か れ ãĻ い る 。