Identificar las direcciones IP de un servidor Linux es esencial para la comunicación de red y la implementación de aplicaciones. Este artículo presenta una solución programática en C para recuperar efectivamente las direcciones IP de una máquina Linux.
El objetivo es obtener mediante programación las direcciones IP de un servidor Linux dentro de una aplicación C . El servidor puede tener varias direcciones IP, incluida una dirección de host local, una dirección interna (de administración) y una dirección externa (pública). El objetivo es recuperar la dirección IP externa para el enlace de la aplicación.
La biblioteca C estándar proporciona la función getifaddrs() para obtener información sobre las interfaces de red y las direcciones IP de un sistema. Aquí hay un ejemplo que usa getifaddrs() para imprimir todas las direcciones IPv4 e IPv6 de la máquina local:
#include#include #include int main() { struct ifaddrs *ifAddrStruct = NULL; struct ifaddrs *ifa = NULL; void *tmpAddrPtr = NULL; getifaddrs(&ifAddrStruct); for (ifa = ifAddrStruct; ifa != NULL; ifa = ifa->ifa_next) { if (!ifa->ifa_addr) { continue; } if (ifa->ifa_addr->sa_family == AF_INET) { // IPv4 address tmpAddrPtr = &((struct sockaddr_in *)ifa->ifa_addr)->sin_addr; char addressBuffer[INET_ADDRSTRLEN]; inet_ntop(AF_INET, tmpAddrPtr, addressBuffer, INET_ADDRSTRLEN); printf("IPv4 Address %s\n", addressBuffer); } else if (ifa->ifa_addr->sa_family == AF_INET6) { // IPv6 address tmpAddrPtr = &((struct sockaddr_in6 *)ifa->ifa_addr)->sin6_addr; char addressBuffer[INET6_ADDRSTRLEN]; inet_ntop(AF_INET6, tmpAddrPtr, addressBuffer, INET6_ADDRSTRLEN); printf("IPv6 Address %s\n", addressBuffer); } } if (ifAddrStruct != NULL) { freeifaddrs(ifAddrStruct); } return 0; }
Para recuperar la dirección IP externa, puede utilizar un enfoque similar pero buscando específicamente la interfaz que se conecta a la red externa. Puede utilizar siocgifaddr con SIOCGIFADDR para recuperar la dirección IP de una interfaz específica.
La función getifaddrs() y siocgifaddr con SIOCGIFADDR proporcionan métodos sólidos para recuperar las direcciones IP de una máquina Linux Cª . Estos enfoques permiten que las aplicaciones se adapten dinámicamente a los cambios de la red y establezcan las conexiones de red necesarias.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3