功能:查询本机IP/MAC地址,过滤掉127.0.0.1 loop-back 地址

适用:linux, ubuntu 16.04 调试通过

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

void getLocalMacIp()

{

int i;

int sock_mac;

char hname[128];

struct hostent *hent;

struct in_addr *paddr = 0;

struct ifaddrs * ifAddrStruct=NULL;

struct ifreq ifr_mac;

void * tmpAddrPtr=NULL;

struct ifreq buf[16];

struct ifconf ifc;

int interface_num;

char nif_name[128] = {0};

char addressBuffer[128];

unsigned char macaddr[6] = {0};

unsigned char *pFirstByte;

//---------------------------------------------

//get device IP address, discard loopback

//---------------------------------------------

gethostname(hname, sizeof(hname));

hent = gethostbyname(hname);

printf("[%s][%d] host: %s\n", __FILE__, __LINE__, hent->h_name);

getifaddrs(&ifAddrStruct);

while (ifAddrStruct!=NULL)

{

if (ifAddrStruct->ifa_addr->sa_family==AF_INET)

{

tmpAddrPtr = &((struct sockaddr_in *)ifAddrStruct->ifa_addr)->sin_addr;

pFirstByte = (unsigned char*)tmpAddrPtr;

if(*pFirstByte != 127)

{

paddr = tmpAddrPtr;

inet_ntop(AF_INET, tmpAddrPtr, addressBuffer, 128);

printf("[%s][%d] NIF %s address %s\n", __FILE__, __LINE__,

ifAddrStruct->ifa_name, addressBuffer);

//---------------------------------------------

//remember NIF name for future use

//---------------------------------------------

strcpy(nif_name, ifAddrStruct->ifa_name);

}

}

ifAddrStruct=ifAddrStruct->ifa_next;

}

//---------------------------------------------

//get device MAC address, discard loopback

//---------------------------------------------

sock_mac = socket( AF_INET, SOCK_DGRAM, 0 );

if(sock_mac > 0)

{

ifc.ifc_len = sizeof(buf);

ifc.ifc_req = buf;

ioctl(sock_mac, SIOCGIFCONF, (char *)&ifc);

interface_num = ifc.ifc_len / sizeof(struct ifreq);

while(interface_num--)

{

if(nif_name[0] && strcmp(nif_name, buf[interface_num].ifr_name))

{

continue;

}

ioctl(sock_mac, SIOCGIFHWADDR, (char *)&buf[interface_num]);

memcpy(macaddr, &buf[interface_num].ifr_hwaddr.sa_data[0], 6);

//printf("NIF %s ", buf[interface_num].ifr_name);

//printf("mac %02x:%02x:%02x:%02x:%02x:%02x \n",

//    macaddr[0], macaddr[1], macaddr[2], macaddr[3], macaddr[4], macaddr[5]);

}

close( sock_mac );

}

}

时间: 07-11

linux ip获取mac,linux 获取本机MAC/IP地址的方法相关推荐

  1. Mac电脑使用:Mac电脑查看本机的IP和公网IP的方法

    在程序开发的道路上会遇到各种各样的问题,会涉及到各个方面,有时候的问题不局限于开发本身,也有可能是附带的问题,但是都是属于程序开发范畴.那么今天就来分享一下和程序开发不想管的但是有属于程序开发范畴的内 ...

  2. php获取照片的拍摄地点,通过照片查找拍摄地址的方法

    原标题:通过照片查找拍摄地址的方法 [新朋友]点击标题下面蓝字「皮鲁安全之家」关注 [老朋友]点击右上角,分享或收藏本页精彩内容 [公众号]搜索公众号:皮鲁安全之家,或者ID :piluwill 一些 ...

  3. Linux工作笔记024---Centos7 下查看本机公网IP

    JAVA技术交流QQ群:170933152 我去,还有这个东西,刚在数据中心,知道这事: 用这个命令来瞅瞅云服务器的公网IP: $ curl ifconfig.me 注意了,不是 i p config ...

  4. Windows获取本机公网ip脚本

    新建txt,重命名为ip.bat 再将下列文本,贴到ip.bat里 @echo offecho Public IP: curl ifconfig.me echo.pause 双击ip.bat,可得本机 ...

  5. 查看Mac本机路由器IP地址

    最简单的方法当然就是使用第三方网站提供的服务,可以查看本机与互联网连接的IP地址,比如"百度". 打开终端,输入"ifconfig"然后return,可以看到更 ...

  6. 使用Linux curl命令获取本机公网IP地址

    使用Linux curl命令获取本机公共IP地址 在本教程中,我们将学习如何使用Linux curl命令查找计算机的公共IP地址. 通常,如果我们想要找到我们使用的公共IP地址,我们会去谷歌并搜索&q ...

  7. QT 怎么获取linux本机的IP地址?

    一.QHostAddress 转 QString QHostAddress haAdrdress = QHostAddress::LocalHost;//LocalHost相当于本地的"12 ...

  8. (转)linux获取/查看本机出口ip

    获取/查看本机出口ip  curl http://members.3322.org/dyndns/getip 1 curl ifconfig.me 2 #或者 3 curl http://member ...

  9. linux用cat查看本机ip,linux sh 如何根据出口网关来获取本机出口ip

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 测试机器:华为P7-L07 安卓测试环境:EMUI 3.1 安卓5.1.1(版本号:P7-L07C01B851,基带版本:23.600.06.00.00, ...

  10. linux c 获取网关ip,linux sh 如何根据出口网关来获取本机出口ip

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 测试机器:华为P7-L07 安卓测试环境:EMUI 3.1 安卓5.1.1(版本号:P7-L07C01B851,基带版本:23.600.06.00.00, ...

最新文章

  1. iScience | 大规模表征学习寻找分子间相互作用
  2. 解决vue移动端适配问题
  3. 今日头条 Go 建千亿级微服务的实践
  4. mysql strstr_实现 strStr() 函数-算法刷题
  5. 1058. 选择题(20)
  6. Android之IPC机制
  7. 心脏遥测监控系统服务器,基于ARM7的心电采集与远程传输系统设计
  8. 解决ie8及低版本浏览器不支持html5标签属性
  9. 开源 非开源_在开源中吃我们自己的狗粮
  10. [洛谷P3242] [HNOI2015]接水果
  11. springcloud config不重启修改配置_SpringCloud实战-Bus消息总线(动态修改配置)
  12. 啊哈算法(pdf免积分下载)
  13. ConcurrentHashMap源码分析
  14. 一元云购短信-配置修改
  15. 2017开发者技术和薪酬调查报告
  16. Dynamic Web Module 4.0 requires Java 1.8 or newer.
  17. 维瓦尔第协奏曲《四季》赏析 (Antonio Vavildi 《The Four Seasons》)
  18. CTF-Crypto 密码解密python脚本(一)
  19. HDMI协议介绍(六)--EDID
  20. leetcode 第344题 (Java实现) 字符串反转

热门文章

  1. 为什么要开招投标项目启动会
  2. Flutter——最详细的Column(纵向)布局使用
  3. 代码评审(Code Review)
  4. oracle数据库null和空字符串区别,null和空字符串('')的区别
  5. OpenCV颜色空间——BGR颜色空间
  6. 干货||常见软件测试管理工具
  7. Python爬虫:处理html实体编码
  8. 开发工具与低代码开发平台丨上海道宁联合Grapecity为您提供各类软件开发工具和服务
  9. 剪映,最简单的PC端视频处理工具,大厂出品必属精品~
  10. 非线性方程的几种线性解法(二分法,不动点法和牛顿法)