Die Identifizierung der IP-Adressen eines Linux-Servers ist für die Netzwerkkommunikation und Anwendungsbereitstellung von entscheidender Bedeutung. Dieser Artikel stellt eine programmgesteuerte Lösung in C vor, um die IP-Adressen eines Linux-Computers effektiv abzurufen.
Das Ziel besteht darin, die IP-Adressen eines Linux-Servers programmgesteuert innerhalb einer C-Anwendung abzurufen . Der Server kann über mehrere IP-Adressen verfügen, darunter eine Localhost-Adresse, eine interne (Verwaltungs-)Adresse und eine externe (öffentliche) Adresse. Ziel ist es, die externe IP-Adresse für die Anwendungsbindung abzurufen.
Die Standard-C-Bibliothek stellt die Funktion getifaddrs() bereit, um Informationen über die Netzwerkschnittstellen und IP-Adressen eines Systems zu erhalten. Hier ist ein Beispiel, das getifaddrs() verwendet, um alle IPv4- und IPv6-Adressen des lokalen Computers zu drucken:
#include <stdio.h> #include <sys/types.h> #include <ifaddrs.h> 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; }
Um die externe IP-Adresse abzurufen, können Sie einen ähnlichen Ansatz verwenden, aber gezielt nach der Schnittstelle suchen, die eine Verbindung herstellt an das externe Netzwerk. Sie können siocgifaddr mit SIOCGIFADDR verwenden, um die IP-Adresse einer bestimmten Schnittstelle abzurufen.
Die Funktion getifaddrs() und siocgifaddr mit SIOCGIFADDR bieten robuste Methoden zum Abrufen der IP-Adressen einer Linux-Maschine in C. Diese Ansätze ermöglichen es Anwendungen, sich dynamisch an Netzwerkänderungen anzupassen und notwendige Netzwerkverbindungen herzustellen.
Das obige ist der detaillierte Inhalt vonWie kann ich die IP-Adressen eines Linux-Servers in C programmgesteuert ermitteln?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!