isinet_addr 子例程
用途
确定给定的 ASCII 字符串是否包含使用点表示法的因特网地址。
库
标准 C 库 (libc.a)
语法
描述
isinet_addr 子例程确定给定的 ASCII 字符串是否包含使用点表示法的因特网地址 (例如, "120.121.122.123")。 isaddr_inet 子例程将因特网地址字符串视为有效字符串,并将任何其他字符串类型视为无效字符串。
isinet_addr 子圆板期望 ASCII 字符串符合以下格式:
string ::= field | field delimited_field^1-3
delimited_field ::= delimiter field
delimiter ::= .
field ::= 0 X | 0 x | 0 X hexadecimal* | 0 x 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 | 指示模式 A 的 n 重复。 |
| ^n-m | 指示模式 A 的 n 到 m 重复。 |
| 阿 * | 指示模式 A 的零次或多次重复,直至达到环境限制。 |
BNF 描述显式声明空格字符 ('') (如果使用)。
| 值 | 描述 |
|---|---|
| {文本} | 指示 text,而不是 BNF 符号。 |
isinet_addr 子圆板允许应用程序使用空终止符 (0x00) 或空格 (0x30) 来终止字符串。 如果应用程序未使用空终止符 (0x00) 或空格 (0x30) 终止字符串,那么它将忽略跟在空格字符后面的字符,并将该字符串视为无效。
下面描述了对字段值的限制:
| 地址格式 | 字段限制 (以十进制为基数的值) |
|---|---|
| a | a < 4294967296. |
| a.b | a < 256; b < 16777216。 |
| a.b.c | a < 256;b < 256;c < 16777216。 |
| a.b.c.d | a < 256; b < 2^8; c < 256; d < 256。 |
isinet_addr 子圆形应用程序可以输入超过先前指定的字段值限制的字段值; isinet_addr 接受长度不超过整数的最低有效位。 isinet_addr 子例程仍然检查截断的值是否超过最大字段值。 例如,如果应用程序提供了字符串0.0;0;0xFF00000001那么 isinet_addr 会将字符串解释为0.0.0.0x00000001并将字符串视为有效。
isinet_addr 应用程序无法在定界符之间省略字段值,并将具有连续句点的字符串视为无效。
有效字符串的示例:
| 输入字符串 | 注释 |
|---|---|
| 1 | isinet_addr 使用 格式。 |
| 1.2 | isinet_addr 使用 a.b 格式。 |
| 1.2.3.4 | isinet_addr 使用 a.b.c.d 格式。 |
| 0x01.0X2.03.004 | isinet_addr 使用 a.b.c.d 格式。 |
| 1.2 3.4 | isinet_addr 使用 a.b 格式; 并忽略 "3.4"。 |
无效字符串的示例:
| 输入字符串 | 原因 |
|---|---|
| ... | 未指定显式字段值。 |
| 1.2.3.4.5 | 字段过多。 |
| 1.2.3.4. | 定界符和字段过多。 |
| 1,2 | 定界符错误。 |
| 1p | 字符串未由空终止符或空格终止。 |
| {empty string} | 不存在字段或定界符。 |
| 9999.1.1.1 | 字段 a 的值超过限制。 |
- isinet_addr 子例程不检查指向 ASCII 字符串的指针; 用户负责确保 ASCII 字符串地址的有效性。
- 应用程序负责验证因特网地址的网络号和主机号是否符合 A 类, B 类或 C 类因特网地址; 任何其他字符串都将作为 C 类地址进行处理。
所有使用 isinet_addr 的应用程序都必须使用定义的 _BSD 宏进行编译。 此外,所有套接字应用程序都必须包含 BSD 库 libbsd (如果适用)。
参数
| 项 | 描述 |
|---|---|
| 名称 | ASCII 字符串缓冲区的地址。 |
返回值
isinet_addr 子例程针对有效输入字符串返回 1 ,针对无效输入字符串返回 0。 isinet_addr 将值作为无符号长整型返回。
文件
#include < ctype.h >
#include < sys/types.h >