C init_ntop Exemplo de função

C init_ntop Exemplo de função
A função init_ntop () é um recurso usado para converter um endereço IPv6 de 32 bits IPv4 e 128 bits em um formato legível. Ao contrário da função init_Ptop, o endereço é convertido na forma original, pois foi convertido em alguma forma numérica binária usando init_pton (). Isso significa que essas duas funções são utilizáveis ​​para fins de privacidade para criptografia e descriptografia de endereços IP.

Sintaxe

#incluir
# caractere const *inet_ntop (int af, const void *fonte, caractere *dst, socklen_t size);

Assim como o init_pton, ele tem três argumentos principais como parâmetro, mas também tem um quarto argumento que lida com o tamanho do soquete/buffer que é apontado por “dst.”Aqui, descreveremos os parâmetros na função init_ntop ().

Argumentos

A descrição geral desta função é que esta função converte o endereço IP no formato binário legível. Esta é principalmente uma forma numérica de texto simples. Essa conversão é feita através do “SRC” especificado, que a converte no formato de texto e, em seguida, o valor resultante é colocado no “DST.”É necessário verificar o tamanho/ espaço da área de DST (destino). Porque se o local for suficiente para armazenar o endereço, o endereço resultante será colocado. É preciso haver uma extensão de buffer livre no segundo caso para adicionar o endereço.

O argumento "AF" refere -se à família do endereço da Internet. Pode ser AF_INET para IPv4 por padrão ou AF_INET6 para IPv6. O parâmetro argumentando "SRC" mostra o buffer segurando o endereço da Internet IPv4 se o argumento "AF" for AF_INET ou IPv6. O endereço fornecido deve estar na ordem do byte de rede.

Assim como o argumento da fonte, o destino 'DS' refere -se ao buffer, onde a função init_ntop () armazenará o endereço resultante na forma de uma string. O 4º especifica o argumento do tamanho apontando para o tamanho do buffer. Afirma-se para esse argumento que sempre deve especificar um argumento não nulo para um destino. Para endereços IPv6, o buffer de armazenamento deve ter no mínimo 46 bytes, enquanto que, no caso de endereços IPv4, o buffer deve ter pelo menos 16 bytes.

Para alocar o armazenamento na forma de um buffer, é necessário e deve ser feito no nível de prioridade, porque o tamanho é importante para armazenar o endereço do valor resultante para evitar qualquer problema relacionado ao tamanho. Definimos duas restrições para permitir que os aplicativos declarem/ atribuam buffers facilmente de tamanho preciso para obter endereços IPv4 e IPv6 no formato da string. Essas restrições também são definidas na biblioteca .

#Define INET_ADDRSTLEN 16
#Define INET_ADDRSTLEN 46

Valor de retorno

O tipo de retorno é o valor obtido pela função nos dois casos; ou é chamado com sucesso ou rescindido sem sucesso por causa de qualquer erro. Mas sempre retorna; É por isso que sempre usamos o tipo de retorno 'int' para a função principal. Se a função for bem -sucedida, INT_ntop () retornará um ponteiro que é retornado ao buffer que contém o endereço após o processo de conversão. Por outro lado, se a função não for bem -sucedida, Inet_ntop () retorna um nulo ou '0' e envia o errno para corrigir o erro facilmente.

Erros causados ​​pela função init_ntop ()

Muitos erros possíveis podem suprimir a função init_ntop () para executar efetivamente, mas destacamos principalmente dois deles aqui.

Eafnosupport

Um parâmetro é um número inválido. Em outras palavras, não pertence a uma família da rede suportada.

Enospc

Este erro ocorre devido a menos espaço para armazenar o endereço convertido. O destino "DST" não é grande, o que leva a armazenamento suficiente para armazenar o valor resultante ou o endereço traduzido. Então o errno menciona o motivo e, em seguida, esses erros são removidos.

Assim como o INET_PTON, o init_ntop também está relacionado à programação do soquete. Como a função de soquete contém o argumento do domínio como um parâmetro que pertence ao AF_INET (IP), portanto, no caso de ambos os protocolos, IPv4 ou IPv6 são selecionados.

Implementação de init_ntop ()

Antes de iniciar a implementação, vimos que o uso e a descrição geral desta função também são compartilhados na página manual do sistema operacional Ubuntu Linux para facilitar o usuário com sua funcionalidade de trabalho.

$ MAN INET_NTOP

Usando o comando mencionado acima, o usuário é direcionado para uma página contendo todas as descrições de init_ntop (). Anexamos um trecho para sua ajuda.

Exemplo 1

Implementamos os exemplos no sistema operacional Linux; Para esse fim, você precisa ter um editor de texto para escrever códigos de origem nele. Considerando que para os valores resultantes, usaremos o terminal do Ubuntu. Abra o editor de texto padrão do Ubuntu e use o código fonte abaixo mencionado para demonstrar o funcionamento de init_ntop ().

Init_ntop () funciona oposto a init_pton; Se você tiver algum conhecimento de init_pton (), você entenderá facilmente a funcionalidade. Caso contrário, a conversão de endereços não é muito difícil usando essas funções na linguagem de programação C.

Começando com as bibliotecas, você pode ver que usamos um ARPA/INET.h biblioteca, porque contém todas as informações sobre endereços da Internet. Por outro.

#incluir
#incluir

Após as bibliotecas, usamos as restrições para mencionar endereços sobre os protocolos da Internet 4 e 6. O endereço fornecido aqui é um formato binário convertido em um formato numérico e facilmente compreensível. Duas estruturas são inicializadas aqui para TH4 e 6 IPS. Da mesma forma, ambos os buffers são usados ​​aqui para armazenar os valores resultantes. Ao chamar a função init_ntop, deve -se garantir que o tamanho do buffer não seja nulo. E então, após a conversão, o endereço é exibido. Na outra parte, o erro precisa ser identificado. Um caso semelhante é com sf_inet6.

A execução precisa de um compilador. Este é um compilador GCC. Com o compilador, o nome do arquivo é mencionado. Seu ntop.C 'é o nome de um arquivo.

$ GCC -O NTOP NTOP.c
$./ ntop

Na execução, você verá que ambos os endereços para ambos os protocolos da Internet são exibidos com sucesso sem encontrar nenhum erro.

Exemplo 2

Este exemplo envolve o uso das funções inet_ntop () e inet_pton () coletivamente em um único código fonte C. A função pton () contém três argumentos com o endereço. Ao mesmo tempo, o INT_ntop () possui 4 parâmetros com o tamanho do buffer. Primeiro, Pton () converte o endereço em formato binário com valores numéricos que não são facilmente legíveis por humanos. Um init_ntop () o converte em um formato de texto.

Compilar o código e executá -lo.

Você pode ver que o endereço fornecido como uma entrada é exibido sem nenhuma alteração usando uma string simples para criar um endereço no formato de texto.

Conclusão

Conclui -se que o artigo 'Init_ntop Function Exemplo' contém todas as possíveis descrições gerais sobre o uso da função ntop () junto com os argumentos que ele usa. Alguns erros também foram mencionados que precisam ser identificados se algo der errado em relação ao espaço de armazenamento ou ao destino de origem. De qualquer forma, usamos dois exemplos básicos, mas impactantes, para demonstrar o funcionamento desta função.