#include #include #include #include #include #include #include #include #include #include #include #include #include #include #define NI_MAXHOST 1025 void get_ip_addresses() { struct ifaddrs *ifaddr, *ifa; char host[NI_MAXHOST]; if(getifaddrs(&ifaddr) == -1) { perror("getifaddrs"); exit(EXIT_FAILURE); } for(ifa = ifaddr; ifa != NULL; ifa = ifa->ifa_next) { if(ifa->ifa_addr == NULL) continue; if(ifa->ifa_addr->sa_family == AF_INET) { // 检查是否为 IPv4 地址 (void)getnameinfo(ifa->ifa_addr, sizeof(struct sockaddr_in), host, NI_MAXHOST, NULL, 0, NI_NUMERICHOST); std::cout << "Interface: " << ifa->ifa_name << " Address: " << host << std::endl; } } freeifaddrs(ifaddr); } int main() { get_ip_addresses(); return 0; }