在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; }
最新评论
KANKANKANKAN
顶起,支持支撑
好文章,谢谢分享,我的博客,欢迎回访
博客很棒 欢迎回访我哦
写得很好,很感激。已经收藏了。
威武啊。。。。。。。
不错学习了!
写的很详细,谢谢分享!