Linux 接口地址的获取-暨获取本地IP地址(所有地址,包括IPv4,IPV6,MAC 地址)
来源:互联网 发布:手机淘宝联盟怎么推广 编辑:程序博客网 时间:2024/05/22 00:27
本文没有使用ioctl 函数,未使用socket ,直接获取本地的所有地址,包括IPv4,IPV6,MAC 地址:
核心函数是:getifaddrs() & freeifaddrs()
代码如下:
#include <stdio.h>#include <sys/socket.h>#include <ifaddrs.h>#include <netpacket/packet.h>#include <arpa/inet.h>/*------------------------------------------------------------------------------ * NAME : GetInterfaceAddress * DESCRIPTION : * PARAMETERS : 无 * RETURNVALUE : 无 * ERRORS : * NOTES : * * AUTHOR : alex * CREATETIME : 2013年4月20日, 17:44 * MOTIFYTIME : *------------------------------------------------------------------------------ */void GetInterfaceAddress(){ struct ifaddrs *ifaddr, *ifa; int family; if (getifaddrs(&ifaddr) == -1) { perror("getifaddrs"); return; } /* Walk through linked list, maintaining head pointer so we can free list later */ for (ifa = ifaddr; ifa != NULL; ifa = ifa->ifa_next) { if (ifa->ifa_addr == NULL) continue; family = ifa->ifa_addr->sa_family; switch (family) { case AF_PACKET: { printf("%s address family: %d%s\n", ifa->ifa_name, family, " AF_PACKET"); struct sockaddr_ll *s = (struct sockaddr_ll*) ifa->ifa_addr; for (int i = 0; i < 6; i++) { printf("%s%02X%s", i == 0 ? "\tMAC Address:<" : "", s->sll_addr[i], i < 5 ? ":" : ">\n"); } break; } case AF_INET: { printf("%s address family: %d%s\n", ifa->ifa_name, family, " AF_INET"); struct sockaddr_in *s = (struct sockaddr_in *) ifa->ifa_addr; //char * aip = inet_ntoa(s->sin_addr); char aip[16]; inet_ntop(AF_INET,&s->sin_addr,aip,sizeof(aip)); printf("\tIPv4 Address:<%s>\n", aip); break; } case AF_INET6: { printf("%s address family: %d%s\n", ifa->ifa_name, family, " AF_INET6"); struct sockaddr_in6 *s = (struct sockaddr_in6 *) ifa->ifa_addr; //char * aip = inet_ntoa(s->sin_addr); char aip[40]; inet_ntop(AF_INET6,&s->sin6_addr,aip,sizeof(aip)); printf("\tIPv4 Address:<%s>\n", aip); break; } default: { printf("Unknown address family\n"); break; } } } freeifaddrs(ifaddr);}
- Linux 接口地址的获取-暨获取本地IP地址(所有地址,包括IPv4,IPV6,MAC 地址)
- java获取本机的所有ip地址 包括IPV6
- 获取本机所有ipv4, ipv6地址
- Android 4.0 获取Ipv4、Ipv6、MAC地址
- 获取本地IPv4地址
- linux下获取本机ip地址,ipv4和ipv6
- linux下获取本机ip地址,ipv4和ipv6
- python获取本地的IP地址及mac地址
- linux下获取MAC地址,IP地址
- IP地址(IPv4)/IPv6地址的正则表达式
- Android中获取本机IPv4地址、IPv6地址、MAC地址
- 获取指定IP地址的MAC地址
- linux 接口IP地址获取
- linux 获取ip地址 MAC地址 netMask地址
- MAC地址,IP地址以及ipv4到ipv6演进
- 获取手机的IP地址(IPV4)
- 获取本地IP地址
- 获取本地IP地址
- Jplayer学习
- python中文件读取模式
- Debian安装配置nginx,php,mysql,wordpress教程
- 图像处理之K-Means算法演示
- Installing MySQL Server on Debian
- Linux 接口地址的获取-暨获取本地IP地址(所有地址,包括IPv4,IPV6,MAC 地址)
- Reverse a Road 最短路
- solr查询参数使用说明
- windows用bat命令启动程序并传递参数
- 黑马程序员_java自学学习笔记(八)----网络编程
- (总结)Nginx配置文件nginx.conf中文详解
- mysql sql语句大全
- windows下Emacs的安装与配置
- 搭建GCC编译环境