inet_addr サブルーチン
目的
インターネットアドレスをインターネット番号に変換します。
ライブラリー
標準 C ライブラリー (libc.a)
構文
#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 ストリング内のインターネット・アドレス表記が有効でない場合、エラー値を戻します。
アプリケーションが、区切り文字のない 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- ^nパターンの N 回の繰り返しを示します。
- ^n-mパターンを N 繰り返す 分 ことを示します。
- * は、環境上の制限までの、パターンの 0 回以上の繰り返しを示します。
- 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 と解釈します。
- Inet_Addr サブルーチンは、ASCII ストリングへのポインターを検査しません。 ユーザーは、ASCII ストリング内のアドレスの妥当性を確認する必要があります。
- アプリケーションは、インターネット・アドレスのネットワーク ID およびホスト ID がクラス A、B、または C のいずれかのインターネット・アドレスに準拠していることを確認する必要があります。 属性の inet_attr サブルーチンは、その他の数値をクラス C アドレスとして処理します。
パラメーター
| 項目 | 説明 |
|---|---|
| CharString | インターネットアドレス形式の文字列を表します。 |
戻り値
有効な入力ストリングの場合、 Inet_Addr サブルーチンは、連結された入力フィールドのビット・パターンで構成される符号なし整数値を戻します。 サブルーチンは、最初のパターンを最上位位置に配置し、後続のパターンを次の最上位位置に追加します。
inet_addrサブルーチンは、無効な文字列に対してはエラー値-1を返す。
ファイル
| 項目 | 説明 |
|---|---|
| /etc/hosts | ホスト名が入っています。 |
| /etc/networks | ネットワーク名が入っています。 |