総合手引 | セクション 3 | English | オプション |
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
inet_pton() 関数は、表示形式のアドレス (つまり文字列で保持されている印字可能な形式) から ネットワーク形式 (通常 struct in_addr もしくは他の内部的なバイナリ表現形式で、ネットワークバイトオーダ) への 変換を行います。 この関数は、指定されたアドレスファミリにおいて、アドレスが 有効なものであれば 1 を返し、パースできなければ 0 を返します。 またシステムエラーが発生した時 (この場合は errno が設定されます) には、-1 を返します。 この関数は現在 AF_INET と AF_INET6 に対して有効です。
inet_aton() ルーチンは、指定された文字列をインターネットアドレスとして解釈し、 与えられた構造体の中にアドレスを設定します。 文字列が正常に解釈されると同ルーチンは 1 を返し、 文字列が無効のとき 0 を返します。 inet_addr() と inet_network() 関数はそれぞれ、 インターネットアドレスとインターネットネットワーク番号として使うのに 適した数値を返します。
inet_ntop() 関数は、ネットワーク形式 (通常 struct in_addr もしくは他の内部的なバイナリ形式で、ネットワークバイトオーダ) から 表示形式 (外部に表示するのに適した形式) への変換を行います。 この関数は、システムエラーが発生した時 (この場合は errno が設定されます) にはヌルを返し、それ以外の時は目的の文字列への ポインタを返します。 この関数は現在 AF_INET と AF_INET6 に対して有効です。
inet_ntoa() ルーチンは、インターネットアドレスを受け取り ‘.amp;’ 表記法のアドレスを示す ASCII 文字列を返します。 inet_makeaddr() ルーチンはインターネットネットワーク番号と ローカルネットワークアドレスを受け取り、 それを基にしてインターネットアドレスを生成します。 inet_netof() と inet_lnaof() ルーチンはインターネットホストアドレスを分割して、 それぞれネットワーク番号とローカルネットワークアドレス部として返します。
すべてのインターネットアドレスはネットワークオーダ (左から右への バイト順) で返されます。 ネットワーク番号とローカルアドレス部はすべてマシン形式の整数値で 返されます。
a.b.c.d a.b.c a.b a
4 個の部分アドレスが指定されると、各部分は 1 バイトのデータと解釈されて、 左から右の順でインターネットアドレスの 4 バイトに割り当てられます。 インターネットアドレスが VAX 上で 32 ビットの整数値であると見なされるとき、上記に該当するバイトは、 "d.c.b.a" と表示されることに注意して下さい。 すなわち、 VAX のバイトオーダは右から左の順になります。
3 個の部分アドレスが指定されると、最後の部分が 16 ビット値と解釈されて、 ネットワークアドレスの右端の 2 バイトになります。 これにより 3 つの部分アドレス形式で Class B ネットワークアドレスを "128.net.host" と指定でき、便利です。
2 個の部分アドレスが与えられると、最後の部分アドレスが 24 ビット値として 解釈されて、ネットワークアドレスの右端の 3 バイトになります。 これにより 2 個の部分アドレス形式で Class A ネットワークアドレスを "net.host" と指定でき、便利です。
1 個の部分アドレスだけ指定されると、値はバイトの再調整なしに 直接ネットワークアドレスに保存されます。
‘.amp;’ 表記法で "部分" として供給される数値はすべて、C 言語で指定される 10 進数、8 進数、16 進数の いずれかの形式を取ることができます (すなわち、先行の 0x または 0X は 16 進数を意味し、 先行する 0 は 8 進数を意味し、数値は 10 進数と解釈されます) 。
inet_aton() と inet_ntoa() 関数は幾分避けるべき関数で、むしろ addr2ascii(3) ファミリが使われます。 しかし、これらの関数はまだ広く実装されていないため、 当面、移植性のあるプログラムはこれらの関数に依存できず、 inet(3) 関数が使われ続けるでしょう。
2373, RFC, IP Version 6 Addressing Architecture, July 1998.
inet_addr は struct, in_addr を返す必要があります。
INET (3) | June 17, 1996 |
総合手引 | セクション 3 | English | オプション |
このマニュアルページサービスについてのご意見は Ben Bullock にお知らせください。 Privacy policy.
“ | Never write it in C if you can do it in `awk'; Never do it in `awk' if `sed' can handle it; Never use `sed' when `tr' can do the job; Never invoke `tr' when `cat' is sufficient; Avoid using `cat' whenever possible. |
” |
— Taylor's Laws of Programming |