inet_addr関数は、ドット付き10進表記のIPv4インターネットアドレスをIN_ADDR構造体に適したアドレス形式に変換します。
unsigned long inet_addr(
const char *cp
);
WS2_32.DLL
インターネット標準の「.」(ドット)表記で表された数字を示すヌル終端文字列を指定します。
成功すると、指定されたインターネットアドレスの適切なバイナリ表現を含む符号なし32ビット値(unsigned long値)を返します。
cpパラメータで指定される文字列が正当なインターネットアドレスを含んでいない場合、例えば「a.b.c.d」表記のアドレスの一部が255を超える値である場合には、0xFFFFFFFF (INADDR_NONE) を返します。
Windows Server 2003以降では、cpパラメータに空文字列("")やNULLポインタを渡した場合には、0xFFFFFFFF (INADDR_NONE) を返します。
Windows XP以前では、cpパラメータに空文字列("")を渡した場合には、0x00000000 (INADDR_ANY) を返します。また、cpパラメータにNULLポインタを渡した場合には、0xFFFFFFFF (INADDR_NONE) を返します。
inet_addr関数は、cpパラメータで指定された文字列を翻訳します。この文字列はインターネット標準の「.」(ドット)表記で表現される数字のインターネットアドレスです。戻り値はインターネットアドレスとして使用するのに適した数値です。すべてのインターネットアドレスがIPのネットワークバイトオーダー(左から右へ順序付けられたバイト列)で返されます。inet_addr関数に「 」(1つの空白文字)を渡すと、関数は0を返します。
Windows Vista以降では、RtlIpv4StringToAddress関数を使用して、文字列表記のIPv4アドレスをIN_ADDR構造体として表現されるバイナリ形式のIPv4アドレスに変換することができます。同様に、RtlIpv6StringToAddress関数を使用して、文字列表記のIPv6アドレスをIN6_ADDR構造体として表現されるバイナリ形式のIPv6アドレスに変換することができます。
「.」(ドット)表記を使用して指定される値は以下のいずれかの形式をとることができます。
4つの部分からなるアドレス(「a.b.c.d」形式)が指定された場合は、それぞれの値がバイトデータとして解釈され、左から右へ、4バイトのインターネットアドレスに割り当てられます。Intelアーキテクチャ上でインターネットアドレスを32ビット整数として表示した場合、上記のバイト配列は「d.c.b.a」となっているように見えます。つまり、Intelプロセッサ上のバイト列は右から左へ順序付けられています。
「.」表記のアドレスを構成している各部分は、C言語と同じ形式で10進数、8進数、または16進数で表記することができます。「0x」または「0X」で始まる数は16進数を表します。「0」で始まる数は8進数であることを表します。それ以外の数は10進数として解釈されます。
アドレス | 意味 |
---|---|
"4.3.2.16" | 10進数 |
"004.003.002.020" | 8進数 |
"0x4.0x3.0x2.0x10" | 16進数 |
"4.003.002.0x10" | 混合 |
inet_addr関数はcpパラメータに渡される文字列に対して、10進数、8進数、16進数、およびそれらの混合表記をサポートしています。
以降の記述はBerkeleyソフトウェアによってのみ使用され、インターネット上のそれ以外のソフトウェアでは使用されません。Berkeleyソフトウェアとの互換性のため、inet_addr関数は以下に示す追加の表記方法をサポートしています。
3つの部分からなるアドレス(「a.b.c」形式)が指定された場合は、最後の数字が16ビットの値であると解釈され、ネットワークアドレスの右側2バイトに入れられます。これにより、3つの部分からなるアドレスはクラスBネットワークアドレスを「128.ネットワーク部.ホスト部」の形式で指定するのに都合がよくなります。
2つの部分からなるアドレス(「a.b」形式)が指定された場合は、最後の数字が24ビットの値であると解釈され、ネットワークアドレスの右側3バイトに入れられます。これにより、3つの部分からなるアドレスはクラスAネットワークアドレスを「ネットワーク部.ホスト部」の形式で指定するのに都合がよくなります。
1つの値だけからなるアドレス(「a」形式)が指定された場合は、その値は再配置されることなく、直接ネットワークアドレスとして格納されます。
Windows 95 以降 / Windows NT 3.51 以降