博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
通过网卡设备名获取网卡IP地址
阅读量:6278 次
发布时间:2019-06-22

本文共 1039 字,大约阅读时间需要 3 分钟。

  hot3.png

int get_addr_from_device(const char *device_name, in_addr_t *addrp){    int _sock_fd;    struct ifconf conf;    struct ifreq *ifr;    char buff[1024];    int num;    int i;    if (!addrp) {        return -1;    }    _sock_fd = socket(PF_INET, SOCK_DGRAM, 0);    if ( _sock_fd < 0 ) return -1;    conf.ifc_len = sizeof(buff);    conf.ifc_buf = buff;    if (ioctl(_sock_fd, SIOCGIFCONF, &conf) < 0) {        close(_sock_fd);        return -1;    }    num = conf.ifc_len / sizeof(struct ifreq);    ifr = conf.ifc_req;    for (i = 0; i < num; i++) {        struct sockaddr_in *sin = (struct sockaddr_in *)(&ifr->ifr_addr);        if (ioctl(_sock_fd, SIOCGIFFLAGS, ifr) < 0) {            close(_sock_fd);            return -1;        }        if ((ifr->ifr_flags & IFF_UP) && strcmp(device_name, ifr->ifr_name) == 0) {            memcpy(addrp, &(sin->sin_addr.s_addr), sizeof(in_addr_t));            close(_sock_fd);            return 0;        }        ifr++;    }    close(_sock_fd);    return -1;}

 

转载于:https://my.oschina.net/tsh/blog/1456734

你可能感兴趣的文章
TCP的三次握手四次挥手
查看>>
关于redis的几件小事(六)redis的持久化
查看>>
package.json
查看>>
webpack4+babel7+eslint+editorconfig+react-hot-loader 搭建react开发环境
查看>>
Maven 插件
查看>>
初探Angular6.x---进入用户编辑模块
查看>>
计算机基础知识复习
查看>>
【前端词典】实现 Canvas 下雪背景引发的性能思考
查看>>
大佬是怎么思考设计MySQL优化方案的?
查看>>
<三体> 给岁月以文明, 给时光以生命
查看>>
Android开发 - 掌握ConstraintLayout(九)分组(Group)
查看>>
springboot+logback日志异步数据库
查看>>
Typescript教程之函数
查看>>
Android 高效安全加载图片
查看>>
vue中数组变动不被监测问题
查看>>
3.31
查看>>
类对象定义 二
查看>>
收费视频网站Netflix:用户到底想要“点”什么?
查看>>
MacOS High Sierra 12 13系统转dmg格式
查看>>
关于再次查看已做的多选题状态逻辑问题
查看>>