在Linux平台读取本地网卡IP的方法如下
#include#include #include #include #include #include #include #include #include #include #include #include #include // 获取本机ip eth_inf网卡名称 调用方法get_local_ip("apcli0", ip); int get_local_ip(const char *eth_inf, char *ip) { int sd; struct sockaddr_in sin; struct ifreq ifr; sd = socket(AF_INET, SOCK_DGRAM, 0); if (-1 == sd) { printf("socket error: %s\n", strerror(errno)); return -1; } strncpy(ifr.ifr_name, eth_inf, IFNAMSIZ); ifr.ifr_name[IFNAMSIZ - 1] = 0; // if error: No such device if (ioctl(sd, SIOCGIFADDR, &ifr) < 0) { printf("ioctl error: %s\n", strerror(errno)); close(sd); return -1; } memcpy(&sin, &ifr.ifr_addr, sizeof(sin)); snprintf(ip, 16, "%s", inet_ntoa(sin.sin_addr)); close(sd); return 0; }