inet_addr サブルーチン

目的

インターネットアドレスをインターネット番号に変換します。

ライブラリー

標準 C ライブラリー (libc.a)

構文

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

in_addr_t inet_addr ( CharString)
register const char *CharString;

説明

Inet_Addr サブルーチンは、ドット表記を使用して有効なインターネット・アドレスを含む ASCII ストリングを、符号なし整数値として入力されたインターネット・アドレス番号に変換します。 ドット表記の例は 120.121.5.123です。 Inet_Addr サブルーチンは、アプリケーションによって提供された ASCII ストリング内のインターネット・アドレス表記が有効でない場合、エラー値を戻します。

注: これらは両方ともドット表記のインターネット・アドレスをインターネット番号に変換しますが、 Inet_Addr サブルーチンと ネットワーク内 は ASCII ストリングを異なる方法で処理します。 アプリケーションが、区切り文字のない IP アドレス値を含むストリングを Inet_Addr サブルーチンに渡すと、そのサブルーチンは、そのストリングと 0xFFFFFFFFによって表される値の論理積を戻します。 それ以外のインターネットアドレスの場合、フィールドの値が先に定義した制限を超えると、inet_addrサブルーチンはエラー値-1を返す。

アプリケーションが、区切り文字のない IP アドレス値を含むストリングを ネットワーク内 サブルーチンに渡すと、 ネットワーク内 サブルーチンは、そのストリングと 0xFFで表される値の論理積を返します。 それ以外のインターネットアドレスの場合、フィールドの値が先に定義した制限を超えると、サブルーチンはエラー値-1を返す。

Inet_Addr サブルーチンを含むすべてのアプリケーションは、 BSD (_BSD) マクロを特定の値に設定してコンパイルする必要があります。 許容値は 43 および 44 です。 さらに、すべてのソケット・アプリケーションに BSD libbsd.a ライブラリーを組み込む必要があります。

各サブルーチンの戻り値の例を以下に示します。

アプリケーション・ストリング inet_addr 戻り inet_network 戻り値
0x1234567890abcdef 0x1234567890abcdef. 256.257.258.259 0x090abcdef 0xFFFFFFFF (= -1) 0xFFFFFFFF (= -1) 0x000000ef 0x0000ef00 0x00010203

Inet_Addr サブルーチンの ASCII ストリングは、以下のフォーマットに準拠している必要があります。

string::= field | field delimited_field^1-3 | delimited_field^1-3
delimited_field::= delimiter field | delimiter
delimiter::= .
field::= 0X | 0x | 0Xhexadecimal* | 0x hexadecimal* | decimal* | 0 octal
hexadecimal::= decimal |a|b|c|d|e|f|A|B|C|D|E|F
decimal::= octal |8|9
octal::= 0|1|2|3|4|5|6|7
注:
  1. ^nパターンの N 回の繰り返しを示します。
  2. ^n-mパターンを N 繰り返す ことを示します。
  3. * は、環境上の制限までの、パターンの 0 回以上の繰り返しを示します。
  4. Backus Naur Form (BNF) 記述には、スペース文字が使用されている場合は、その文字が記述されています。 テキスト は BNF シンボルではなく、テキストを示します。

Inet_Addr サブルーチンは、アプリケーションがヌル終了文字 (0x00) またはスペース (0x30) でストリングを終了することを必要とします。 アプリケーションがヌル終了文字またはスペースで終了しない場合、このストリングは無効と見なされます。 サブルーチンは、スペースの末尾の文字を無視します。

以下では、 Inet_Addr サブルーチンのフィールド値に関する制約事項について説明します。

Format フィールドの制限 (10 進数)
a 値 a < 4,294,967,296
a.b 値 a < 256; 値 _b < 16,777,216
a.b.c 値 a < 256; 値 _b < 256; 値 _c < 65536
a.b.c.d 値 a < 256; 値 _b < 256; Value_c < 256; Value_d < 256

Inet_Addr サブルーチンを使用するアプリケーションは、これらの制限を超えるフィールド値を入力できます。 サブルーチンは、長さが整数までの最下位ビットを受け入れ、切り捨てられた値が最大フィールド値を超えているかどうかを検査します。 例えば、アプリケーションが 0x1234567890 のフィールド値を入力し、システムが整数ごとに 16 ビットを使用する場合、 Inet_Addr サブルーチンはビット 0 から 15 を使用します。 サブルーチンは 0x34567890を返します。

アプリケーションは、区切り文字の間のフィールド値を省略できます。 Inet_Addr サブルーチンは、空のフィールドを 0 と解釈します。

注:
  1. Inet_Addr サブルーチンは、ASCII ストリングへのポインターを検査しません。 ユーザーは、ASCII ストリング内のアドレスの妥当性を確認する必要があります。
  2. アプリケーションは、インターネット・アドレスのネットワーク ID およびホスト ID がクラス A、B、または C のいずれかのインターネット・アドレスに準拠していることを確認する必要があります。 属性の inet_attr サブルーチンは、その他の数値をクラス C アドレスとして処理します。

パラメーター

項目 説明
CharString インターネットアドレス形式の文字列を表します。

戻り値

有効な入力ストリングの場合、 Inet_Addr サブルーチンは、連結された入力フィールドのビット・パターンで構成される符号なし整数値を戻します。 サブルーチンは、最初のパターンを最上位位置に配置し、後続のパターンを次の最上位位置に追加します。

inet_addrサブルーチンは、無効な文字列に対してはエラー値-1を返す。

注: ドット表記値が 255.255.255.255 のインターネット・アドレス、または別の基本形式の同等の IP アドレスの場合、 inet_addr サブルーチンは符号なし整数値 4294967295 を戻します。 この値は、エラー値の符号なし表現と同じです。 それ以外の場合、 inet_addr サブルーチンは 255.255.255.255 を有効なインターネット・アドレスと見なします。

ファイル

項目 説明
/etc/hosts ホスト名が入っています。
/etc/networks ネットワーク名が入っています。