C getockName de la función de nombre

C getockName de la función de nombre
La programación de socket es bien conocida y común en la programación C entre desarrolladores y usuarios. Dentro de este tipo de programación, tendemos a conectar dos puntos finales. Estos puntos finales pueden ser dos servidores, un servidor, un socket, etc. Como su nombre indica, la función "GetSockName" se utiliza para que el nombre de un socket funcione en la red. Puede o no ser el nombre del socket, pero la dirección de ese enchufe en particular se mostraría utilizando esta función. Por lo tanto, hemos probado un método simple para ilustrar la función getSockName () en C dentro de esta guía. Echemos un vistazo nuevo a su ejemplo mientras trabajamos en el programa usando Ubuntu 20.04 Sistema Linux.

Ejemplo: Función GetSockName

Echemos un vistazo al ejemplo de la función GetSockName en C. Utilice el acceso directo de la tecla "Ctrl+Alt+T" para abrir rápidamente la aplicación de línea de comandos en su pantalla. Puede tomar solo 10 segundos, y su terminal estará listo para su uso. Dentro del área de instrucción terminal, debe escribir la consulta de "toque" junto con el "nombre de archivo" para generar un archivo completamente nuevo en su sistema, i.mi., vacío. Hay muchas opciones disponibles para abrir este archivo recién generado, yo.mi., Vim, nano o editor de texto. Los usuarios pueden preferir abrirlo dentro del editor de texto primero, crear un código, actualizar o modificar el código, y luego ejecutar dentro del shell. Eso podría hacerse simplemente tocando dos veces el nombre del archivo que reside en la carpeta "Inicio" del Explorador de archivos. Si los usuarios desean abrir el archivo vacío dentro del editor "GNU Nano", pueden utilizar el comando Terminal "Nano". Escriba esta instrucción y presione Enter para ejecutarla. Se enumeran las instrucciones para la creación y la apertura de archivos:

El código C comienza con la inclusión de algunos de los archivos de encabezado principales e importantes. La palabra clave "incluir" se usa con el signo hash para hacerlo. Aquí se usan un total de 11 encabezados. El "stdio.H ”se ha utilizado para obtener la entrada y la salida estándar. El "unistd.H ". se utiliza para acceder a la API del sistema operativo POSIX, I.mi., Sistemas de Linux y UNIX. El "stdlib.El encabezado H ”es una biblioteca estándar para fines generales, yo.mi., Conversiones de tipo, gestión de procesos, asignaciones de almacenamiento, etc. El "errno.h "se usa principalmente para problemas de error e informes. La cuerda.El módulo H "para C se usa para manejar las cuerdas junto con algunas de las otras funciones. El "Sys/Tipos.El encabezado H ”se utiliza para definir los tipos de datos de las variables y las funciones utilizadas en nuestro código de programa.

El archivo de encabezado "sys/stat.h "se usa aquí para describir la construcción de los datos de información devueltos. La biblioteca de encabezado "Sys/Socket.h "se utilizará para usar las funciones y mutables de los enchufes en nuestro código. El "sys/un.H ”Header Library está aquí para guardar las direcciones de los enchufes tipo Unix. El "netint/in.H ”está diseñado específicamente para inicializar el tipo de estructura mutable para la dirección IPv6 en loopback.

Las variables ADET Addrstrlen o Inet6 Addrstrlen generalmente se definen en el "ARPA/INET.H ”Biblioteca de encabezado. Después de todos los archivos de encabezado, hemos implementado una función definida por el usuario llamada "ducha de ducha", tomando un argumento del puntero de caracteres constante "e". Este argumento del puntero hace referencia a algunos errores encontrados hasta ahora en nuestro código. Para el lenguaje de programación C, el método de error POSIX, i.mi., Perror, se está utilizando para mostrar un mensaje de respuesta de error a "stderr" dependiendo de una condición de error errno. Emite "STR" y un mensaje de respuesta de error que se ajusta al ERRNO Mutable Universal, según lo determinado por el código del programa. La función "perror" utiliza el argumento "e" como un mensaje de error para mostrarlo. La función "Salir (1)" está aquí para salir o finalizar la función "ShowerRor ()" justo en este momento:

Aquí viene la función "Sock_addr" del tipo de puntero que toma tres argumentos en sus parámetros. El parámetro "S" representa el socket, y la variable de puntero de tipo de caracteres "BUF" se utilizará para almacenar los datos del socket en él. Mientras que el último argumento "BufSize" de un tipo de objeto "size_t" se usará para definir el tamaño de una variable de búfer o simplemente búfer de búfer. Dentro de esta función, hemos creado una estructura llamada "ADDR" para almacenar la dirección de socket. La longitud de la variable "ADDR" se ha almacenado dentro de la variable de tipo entero "LEN" aplicando la función "SizeOf" en ella.

La función getSockName () se ha utilizado aquí para adquirir el nombre de un socket. Esta función utiliza el socket, las direcciones de socket y la longitud del socket como argumentos de entrada. Cualquiera que sea la respuesta para la función GetSockName, la respuesta se almacenará en la variable "Z", I.mi., recolectado o no. La declaración "IF" está aquí para verificar la condición de que la variable "Z" recibió el código de estado de retorno como -1, I.mi., FALSO. Significa que, si no puede obtener el nombre de un enchufe, devolverá nulo a la función de llamadas. La función "snprintf" se usa para obtener la dirección del socket, convertirla en forma de cadena y mostrarla en el shell. Para esto, el tamaño del búfer y el búfer deben usarse como argumento. La dirección del puerto de socket se utiliza en la función "NTOHS" para convertirla en código de byte alojamiento:

La función Main () toma 4 argumentos en su parámetro. La variable de dirección de tipo de estructura "ADDR" para un zócalo se declara con la variable de tipo de caracteres "BUF" del tamaño 64. Luego, hemos estado creando un Socket de Internet IPv4 utilizando la función Socket. Este estado de socket devuelve el código y se guardará en la variable "sck_inet". Si el socket no se crea con éxito, como el SCK_INET no es igual a cero, llamará al mensaje de "ducha" al pasar un texto simple "Socket ()".

Después de esto, hemos intentado crear una dirección "AF_INET". La función memset () se usa para inicializar la dirección para un socket a 0. La familia de direcciones de socket se ha inicializado como "AF_INET", su puerto también se declara mientras la función HTONS está aquí para traducir el formato de byte de host al formato de byte de red. La función inet_aton utiliza la dirección IP local para convertirla en el formato de cadena estándar y guardarlo en la variable de dirección de socket. El tamaño de la variable de dirección se almacena en la variable "len". La función bind () une la dirección al socket y guarda el código de retorno de estado en "z". Si el código de estado es "-1", yo.mi., falso, llamará al mensaje de "ducha de ducha" mientras llama a la función bind () en él. Si la función "Sock_addr ()" no puede llamarse, también llamará a la función "Rorador de ducha" que toma "Sock_addr" como argumento. La declaración Printf muestra el nombre almacenado en un búfer:

Se llama a la función de cierre para cerrar el socket de Internet IPv4:

Después de la compilación y la ejecución, tenemos el nombre del socket en el que está conectado nuestro sistema:

Conclusión:

Este artículo es de hecho una necesidad de que cada usuario C busque ansiosamente el ejemplo de "GetSockName" en Linux. Hemos discutido un solo ejemplo en esta guía. Hemos tratado de simplificar para nuestros usuarios ya que el código se ha dividido en trozos. Tenemos la esperanza de que encuentre este artículo muy útil. Echa un vistazo a otros artículos de Sugerencia de Linux para obtener más consejos y tutoriales.