Hton, Htonl e Htons em C

Hton, Htonl e Htons em C
Lamentavelmente, nem todas as máquinas armazenam bytes de um valor multibyte na sequência exata. Os componentes de rede fornecem um padrão de sequência de bytes convencional para informações transportadas pela Web, permitindo que os sistemas com vários padrões de ordem de bytes se conectem. O pedido de byte de rede é o termo usado para descrever isso. Durante a criação de uma conexão de soquete da web, deve -se garantir que as informações no pecado.Porto e pecado.componentes addr da soja no construto devem ser ilustrados em ordem de byte de rede. Neste guia hoje, discutiremos o uso do HTON, HTONL e HTONS FUNCIONAR.

Exemplo 1:

Para criar um código C, você deve ter o compilador GCC montado no seu sistema Kali Linux. Dentro do shell Kali Linux, você precisa criar um novo arquivo C chamado “Htons.C ”. Você pode abrir este arquivo com a instrução "nano" em uma única instrução listada na imagem.

Agora que o arquivo C já foi lançado no editor Nano, vamos adicionar algum script C para elaborar o uso de "htons" em C. Cada código C começa com alguns de seus cabeçalhos incluídos no topo para que possamos usar facilmente as funções e variáveis ​​relacionadas no código. Antes disso, precisamos incluir os cabeçalhos principais necessários e necessários para a transmissão e uso bem -sucedidos de dados de entrada e saída no script. Portanto, estamos lançando a palavra -chave "incluir" para adicionar o cabeçalho padrão "stdio.h "," stdlib.h "e" unistd.H ”no código.

Depois disso, precisamos adicionar alguns cabeçalhos do sistema para ativar a programação do soquete na programação C. Portanto, estamos usando o “SYS/TIPOS.H ”,“ Sys/soquete.h "e" netinet/in.H ”Cabeçalho no código. Para utilizar o uso de funções htons () no código C, precisamos usar o “arpa/inet.H ”cabeçalho aqui também. Agora, é hora de definir a porta 8082 com a palavra -chave Connect_port necessária para conectar os usuários na programação do soquete. O trabalho geral seria realizado na função principal () da programação c i.e., Código do driver de C. Esta função foi iniciada com o uso da palavra -chave struct para definir a estrutura "Sockadd_in" com um nome de variável "endereço" para adicionar o endereço do soquete nesta variável.

Agora, o objeto da estrutura do endereço do soquete "endereço" foi usado para utilizar o pecado.Variável de porta que está chamando a função HTONS () com a variável Connect_Port I.e., tendo um número de porta. A função htons () estaria permitindo o uso de vários padrões de ordem de bytes.

Agora, é hora de compilar o arquivo C chamado “Htons.C ”depois de salvar o código acima. Para compilá -lo, você precisa usar a palavra -chave "GCC" com o nome do arquivo "Htons.C ”, -o opção e o nome do arquivo de objeto a ser criado i.e., “Htons.fora".

Agora, quando você executa o arquivo de objeto criado pela instrução GCC, ele permitirá o uso de pedidos de byte padrão em nosso sistema.

Exemplo 2:

É hora de criar outro exemplo de C para utilizar a função HTONL junto com a função HTONS no código. Para isso, estamos criando outro arquivo C chamado “Servidor.C ”e abrindo -o com o editor padrão do GNU Nano, conforme mostrado na imagem anexada.

Depois de abrir o arquivo C, adicionamos os mesmos cabeçalhos nas principais linhas que fizemos no primeiro exemplo. Mas também adicionamos alguns novos cabeçalhos: “Tempo.H ”para usar a função de tempo, o“ errno.H ”é obter o número do erro e a“ String.H ”o cabeçalho foi eliminado para usar as variáveis ​​e funções de string no código. Este código contém apenas o método do driver principal ().

Dois descritores de tipos inteiros foram declarados como 0. Um é ouvir o arquivo e o outro para fazer uma conexão de soquete. A estrutura “Socket_Address” foi especificada usando a estrutura integrada de Sockaddr_in da programação de soquete que armazenará o endereço de um soquete. Uma matriz de caracteres chamada "MessageBuffer" do tamanho 1025 é definida para armazenar qualquer mensagem que será convertida em outra ordem de byte. A variável de tempo interno time_t é usada para definir a variável "ticks" para contar o total de ticks de um relógio. O escuta_file_descriptor () estará mantendo o valor de retorno da função Socket () ou a inicialização do soquete através das opções AF_INET e SOCK_STEAM.

A função MEMSET () é usada aqui para definir os primeiros bytes de contagem de uma variável server_address e MessageBuffer para "0" provavelmente enquanto usam a função sizeoof (). Usando a variável incorporada server_address, definimos a família do soquete como "af_inet" e o endereço de entrada do soquete como "inaddr_any" usando a função htonl () de C chamando a variável interna s_addr. Da mesma forma, a variável server_address foi utilizada para chamar o objeto sin_port e armazenar o número da porta 8081 nele usando a função htons () de c.

Agora, a função bind () da programação do soquete em C foi usada para ligar o soquete com o endereço especificado usando a variável ouvice_file_descriptor e server_address variável nele. A função de escuta do programa C foi chamada aqui para ouvir o soquete no número 10. O loop while foi inicializado aqui para criar uma conexão entre o soquete e o tempo enquanto usa a função aceit (). Esse processo tem recebido os dados na sequência de dados de bytes de tempo e convertê -los em pedidos de bytes de dados padrão que podem ser usados ​​pela máquina e máquina local. No final, a conexão foi fechada sem nenhum problema.

Depois de executar e compilar este programa, geramos seu arquivo de objeto.

Ao executar seu arquivo de objeto, o soquete começou a ouvir os ticks de tempo para cada segundo e convertê -lo em ordem de byte padrão.

Conclusão

Este artigo é sobre o uso de funções padrão de pedidos de byte de rede para converter alguns dados diferentes provenientes da Web para sequências de bytes de rede padrão. Para isso, utilizamos dois exemplos usando as funções Htons () e Htonl ().