Hton, Htonl y Htons en C

Hton, Htonl y Htons en C
Lamentablemente, no todas las máquinas almacenan los bytes de un valor multibito en la secuencia exacta. Los componentes de la red proporcionan un estándar de secuencia de bytes convencional para la información llevada a cabo en la web, lo que permite sistemas con varios estándares de pedido de bytes para conectarse. El orden de los bytes de red es el término utilizado para describir esto. Durante la creación de una conexión de socket web, uno debe asegurarse de que la información en el pecado.puerto y pecado.Los componentes ADDR del SockAdDR en la construcción deben ilustrarse en el orden de los bytes de red. En esta guía hoy, discutiremos el uso de la función Hton, HtonL y HTON de C para convertir la secuencia de bytes host de los valores enteros de unicode o multibyte en secuencia de bytes de red.

Ejemplo 1:

Para crear un código C, debe tener el compilador GCC montado en su sistema Kali Linux. Dentro del shell de Kali Linux, debe crear un nuevo archivo C llamado "Htons.C". Puede abrir este archivo con la instrucción "nano" en una sola instrucción que se enumera en la imagen.

Ahora que el archivo C ya está lanzado en el editor nano, vamos a agregar algún script c para elaborar el uso de "htons" en c. Cada código C comienza con algunos de sus encabezados incluidos en la parte superior para que podamos usar fácilmente las funciones y variables relacionadas en el código. Antes de eso, debemos incluir los encabezados principales requeridos y necesarios para la transmisión exitosa y el uso de datos de entrada y salida en el script. Por lo tanto, hemos estado eliminando la palabra clave "incluir" para agregar el encabezado estándar "stdio.H "," Stdlib.h "y" unistd.h "en el código.

Después de esto, necesitamos agregar algunos encabezados del sistema para habilitar la programación de sockets en la programación C. Por lo tanto, estamos usando el "Sys/Tipos.H "," Sys/Socket.h "y" netinet/in.encabezado h "en el código. Para utilizar el uso de funciones htons () en el código C, necesitamos usar el "ARPA/INET.H ”encabezado aquí también. Ahora, es hora de definir el puerto 8082 con la palabra clave Connect_Port que se necesita para conectar a los usuarios en la programación de socket. El trabajo general se realizaría dentro de la función Main () de la programación C I.mi., Código de controlador de C. Esta función se ha iniciado con el uso de la palabra clave struct para definir la estructura "sockadd_in" con un nombre de variable "dirección" para agregar la dirección de socket en esta variable.

Ahora, la "dirección" de la estructura de la dirección del socket se ha utilizado para utilizar el pecado.Variable de puerto que ha estado llamando a la función HTons () con la variable Connect_Port I.mi., tener un número de puerto en él. La función htons () habría permitido el uso de varios estándares de orden de bytes.

Ahora, es hora de compilar el archivo C llamado "Htons.c "después de guardar el código anterior. Para compilarlo, debe usar la palabra clave "GCC" con el nombre del archivo "Htons.opción c ", -o y el nombre del archivo de objeto que se creará i.mi., "HTON.afuera".

Ahora, cuando ejecuta el archivo de objeto creado por la instrucción GCC, habilitará el uso de pedidos de byte estándar en nuestro sistema.

Ejemplo 2:

Es hora de crear otro ejemplo de C para utilizar la función HTONL junto con la función HTONS en el código. Para esto, hemos estado creando otro archivo C llamado "servidor.c "y abrirlo con el editor nano GNU estándar como se muestra en la imagen adjunta.

Después de abrir el archivo C, agregamos los mismos encabezados en las líneas superiores como lo hicimos en el primer ejemplo. Pero también hemos agregado algunos encabezados nuevos: "Tiempo.h "Para usar la función de tiempo, el" Errno.H "es para obtener el número de error y la" cadena.El encabezado h "se ha descartado para usar las variables de cadena y las funciones en el código. Este código solo contiene el método del controlador principal ().

Se han declarado dos descriptores de tipos enteros a 0. Uno es escuchar el archivo y el otro para hacer una conexión de socket. La estructura "Socket_address" se ha especificado utilizando la estructura incorporada de la programación de sockets que almacenará la dirección de un socket. Una matriz de personajes llamada "MessageBuffer" del tamaño 1025 se define para almacenar cualquier mensaje que se convertirá en otro orden de bytes. La variable de tiempo incorporada Time_t se usa para definir la variable "Ticks" para contar las garrapatas totales de un reloj. Listen_file_descriptor () mantendrá el valor de retorno de la función Socket () o la inicialización del socket a través de opciones AF_INET y SOCK_STREAM.

La función MemSet () se usa aquí para establecer los bytes del primer recuento de una variable server_address y MessageBuffer en "0" probablemente mientras usa la función sizeoof (). Usando la variable incorporada Server_Address, hemos definido la familia Socket como "AF_INET", y la dirección de entrada de socket como "inAddr_any" usando la función htonl () de C llamando a la variable incorporada S_ADDR. De la misma manera, la variable server_address se ha utilizado para llamar al objeto sen_port y almacenar el número de puerto 8081 en él utilizando la función htons () de c.

Ahora, la función bind () de la programación de socket en c se ha utilizado para unir el socket con la dirección especificada utilizando la variable de escucha_file_descriptor y server_address en ella en él. Se ha llamado a la función de escuchar del programa C para escuchar el socket en el número 10. El bucle mientras se ha inicializado aquí para crear una conexión entre el socket y el tiempo mientras se usa la función Accept (). Este proceso ha estado obteniendo los datos en la secuencia de datos de bytes de tiempo y la conversión en orden de bytes de datos estándar que puede ser utilizado por el socket y la máquina local. Al final, la conexión se cerró sin ningún problema.

Después de ejecutar y compilar este programa, hemos generado su archivo de objeto.

Al ejecutar su archivo de objeto, el socket ha comenzado a escuchar las garrapatas de tiempo por cada segundo y convertirlo en orden de byte estándar.

Conclusión

Este artículo trata sobre el uso de funciones estándar de orden de bytes de red para convertir algunos datos diferentes que vienen de la web a las secuencias de bytes de red estándar. Para esto, hemos utilizado dos ejemplos utilizando las funciones htons () y htonl ().