sub-rotina inet_addr
Propósito
Converte endereços de Internet para números da Internet.
Biblioteca
Biblioteca C Padrão (libc.a)
Sintaxe
#include <sys/socketvar.h>
#include <netinet/in.h>
#include <arpa/inet.h>
in_addr_t inet_addr ( CharString)
register const char *CharString;
Descrição
O subroutine inet_addr converte uma string ASCII contendo um endereço de Internet válido usando notação de ponto em um número de endereço de Internet digitado como um valor inteiro não assinado. Um exemplo de notação ponto é 120.121.5.123. O subroutine inet_addr retorna um valor de erro se a notação de endereço da Internet na cadeia ASCII fornecida pelo aplicativo não for válida.
Quando um aplicativo dá ao inet_network subroutine uma string contendo um valor de endereço da Internet sem um delimitador, a subroutine inet_network retorna o produto lógico do valor representado pela string e 0xFF. Para qualquer outro endereço da Internet, a sub-rotina retorna um valor de erro de -1 se o valor dos campos exceder os limites definidos anteriormente.
Todos os aplicativos contendo a subroutine inet_addr devem ser compilados com o macro _BSD configurado para um valor específico. Os valores aceitáveis são 43 e 44. Além disso, todos os aplicativos de soquete devem incluir a biblioteca BSD libbsd.a ..
Os valores de retorno de amostra para cada subroutine são os seguintes:
| Cadeia de Aplicativos | inet_addr Retorna | inet_network Retorna |
|---|---|---|
| 0x1234567890abcdef 0x1234567890abcdef. 256.257.258.259 | 0x090abcdef 0xFFFFFFFF (= -1) 0xFFFFFFFF (= -1) | 0x000000ef 0x0000ef00 0x00010203 |
A cadeia ASCII para a subroutina inet_addr deve estar em conformidade com o seguinte formato:
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- ^nindica n repetições de um padrão.
- ^n-mindica n para m repetições de um padrão.
- * indica 0 ou mais repetições de um padrão, até os limites ambientais.
- A descrição do Backus Naur form (BNF) afirma o caractere de espaço, se um for usado. Texto indica texto, não um símbolo do BNF.
A subroutine inet_addr requer um aplicativo para finalizar a string com um terminador nulo (0x00) ou um espaço (0x30). A string é considerada inválida se o aplicativo não terminar ele com um terminador nulo ou um espaço. A subroutine ignora personagens rasteirando um espaço.
A seguir são descritas as restrições nos valores de campo para a subroutine inet_addr :
| Formato | Restrições De Campo (em decimal) |
|---|---|
| a | Valor_a < 4.294.967.296 |
| a.b | Valor_a < 256; Valor_b < 16.777.216 |
| a.b.c | Value_a < 256; Value_b < 256; Value_c < 65536 |
| a.b.c.d | Valor_a < 256; Valor_b < 256; Valor_c < 256; Valor_d < 256 |
Os aplicativos que usam a subroutine inet_addr podem inserir valores de campo excedendo essas restrições. A subroutine aceita os bits menos significativos até um número inteiro de comprimento, em seguida verifica se o valor truncado excede o valor máximo de campo. Por exemplo, se um aplicativo entra em um valor de campo de 0x1234567890 e o sistema usa 16 bits por inteiro, então a subroutine inet_addr usa bits 0 -15. A subroutine retorna 0x34567890.
Os aplicativos podem omitificar valores de campo entre delimitadores. A subroutine inet_addr interpreta campos vazios como 0.
- O subroutine inet_addr não confere o ponteiro para a sequência ASCII. O usuário deve garantir a validade do endereço na sequência ASCII.
- O aplicativo deve verificar se a rede e os IDs de host para o endereço Internet estão em conformidade com um endereço de Internet Classe A, B ou C. O subroutine inet_attr processa qualquer outro número como um endereço Classe C.
Parâmetros
| Item | Descrição |
|---|---|
| CharString | Representa uma sequência de caracteres no formulário de endereço da Internet. |
Valores De Retorno
Para strings de entrada válidas, o subroutine inet_addr retorna um valor inteiro não assinado composto por padrões de bits dos campos de entrada concatenados juntos. A subroutina coloca o primeiro padrão na posição mais significativa e anexa quaisquer padrões subsequentes para as próximas posições mais significativas.
A sub-rotina inet_addr retorna um valor de erro de -1 para cadeias de caracteres inválidas.
Arquivos
| Item | Descrição |
|---|---|
| /etc/hosts | Contém nomes de host. |
| /etc/networks | Contém nomes de rede. |