inet_addr() - ネットワーク・バイト・オーダーへの IP アドレスの変換

標準

標準/拡張機能 C/C++ 依存項目

XPG4.2
Single UNIX Specification、バージョン 3

両方  

形式

X/Open:
#define _XOPEN_SOURCE_EXTENDED 1
#include <arpa/inet.h>

in_addr_t inet_addr(const char *cp);
バークレー・ソケット:
#define _OE_SOCKETS
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>

unsigned long inet_addr(char *cp);

機能説明

inet_addr() 関数は、標準の小数点付き 10 進数表記で表されたホスト・アドレスの文字ストリングを変換し、IP アドレスとして使用できるホスト・アドレスを戻します。

パラメーター
説明
cp
標準のドット 10 進 (.) 表記の文字ストリング
標準の小数点付き 10 進数表記で指定された値は、以下のいずれかの形式になります。
a.b.c.d
a.b.c
a.b
a

4 つのパートにより構成されるアドレスが指定された場合、各パートがデータ・バイトとして変換され、それぞれが IP アドレスの 4 バイトの 1 つに、左から右へ割り当てられます。

3 つのパートにより構成されるアドレスが指定された場合、最後のパートが 16 ビットとして変換され、ネットワーク・アドレスの右端の 2 バイトになります。これにより、3 パートのアドレス形式で 128.net.host 形式のクラス B ネットワーク・アドレスを指定できるようになります。

2 つのパートにより構成されるアドレスが指定された場合、最後のパートが 24 ビットとして変換され、ネットワーク・アドレスの右端の 3 バイトになります。これにより、2 パートのアドレス形式で net.host 形式のクラス A ネットワーク・アドレスを指定できるようになります。

1 つのパートにより構成されるアドレスが指定された場合、バイトの再構成を行うことなく、その値が直接ネットワーク・アドレス・スペースに 保管されます。

標準の小数点表記アドレスのパートとして使える数字は、10 進数、16 進数、または 8 進数です。数字は C 言語の構文で変換されます。 0x で始まる場合は 16 進数、0 で始まる場合は 8 進数、0 で始まらない数字は、10 進数を意味します。

アドレスは、ヌルまたは他の空白文字で 終わっていないと有効ではありません。アドレスのすべてのパートまたは一部のパートが空ストリングであってもかまいません。 それぞれの空のパートは値 0 に解決されます。ヌルまたは他の空白文字で始まる入力文字ストリングは、 空のアドレスとして扱われ、値 INADDR_ANY が戻される結果になります。

C++ の特殊な動作: C++ でこの関数を使用するには、_XOPEN_SOURCE_EXTENDED 1 フィーチャー・テスト・マクロを 使用する必要があります。

注 :
  1. この関数を使用するアプリケーションが ASCII 入出力形式を 利用できるようにするには、__LIBASCII ページの記述に従って、フィーチャー・テスト・マクロ __LIBASCII を定義してください。
  2. inet_addr() 関数は、拡張 ASCII の拡張機能のレベルに依存します。詳細は、拡張 ASCII サポートを参照してください。

戻り値

正常に実行された場合、inet_addr() は、ネットワーク・バイト・オーダーの IP アドレスを戻します。

入力文字ストリングの形式が正しくない場合、値 INADDR_NONE が 戻され、errno は EINVAL に設定されます。

関連情報