ioctl获取本地IP和MAC地址
2013-07-11 16:18
429 查看
参考了一些网上的方法,整理如下:
#include <net/if.h> #include <sys/ioctl.h> #include <arpa/inet.h> #include <stdlib.h> #include <stdio.h> #include <string.h> #define ETH_NAME "eth0" int main() { int sockfd; struct sockaddr_in sin; struct ifreq ifr; unsigned char mac[6]; sockfd = socket(AF_INET, SOCK_DGRAM, 0); if (sockfd == -1) { perror("socket error"); exit(1); } strncpy(ifr.ifr_name, ETH_NAME, IFNAMSIZ); //Interface name if (ioctl(sockfd, SIOCGIFADDR, &ifr) == 0) { //SIOCGIFADDR 获取interface address memcpy(&sin, &ifr.ifr_addr, sizeof(ifr.ifr_addr)); printf("ip: %s\n", inet_ntoa(sin.sin_addr)); } if (ioctl(sockfd, SIOCGIFHWADDR, &ifr) == 0) { //SIOCGIFHWADDR 获取hardware address memcpy(mac, ifr.ifr_hwaddr.sa_data, 6); printf("mac: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]); } return 0; } /* struct ifreq { char ifr_name[IFNAMSIZ]; union { struct sockaddr ifr_addr; struct sockaddr ifr_dstaddr; struct sockaddr ifr_broadaddr; struct sockaddr ifr_netmask; struct sockaddr ifr_hwaddr; short ifr_flags; int ifr_ifindex; int ifr_metric; int ifr_mtu; struct ifmap ifr_map; char ifr_slave[IFNAMSIZ]; char ifr_newname[IFNAMSIZ]; char * ifr_data; }; }; */
相关文章推荐
- C#获取本地计算机名IP,Mac地址
- C#获取本地计算机名IP,Mac地址
- C#获取本地计算机名,IP,MAC(物理)地址(转)
- C#编程之 如何获取本地和远程主机的IP及MAC地址
- Linux C 网络编程 - 获取本地 ip 地址,mac,通过域名获取对应的 ip 、获取本地主机的名字
- c#获取本地IP和MAC地址
- C#编程之 如何获取本地和远程主机的IP及MAC地址
- Linux C 网络编程 - 获取本地 ip 地址,mac,通过域名获取对应的 ip
- 获取本地MAC地址和多IP
- c#获取本地IP和MAC地址
- java根据本地Ip获取mac地址
- C#获取本地计算机名IP,Mac地址
- JS获取本地IP、MAC地址
- Linux C 网络编程 - 获取本地 ip 地址,mac,通过域名获取对应的 ip
- c#获取本地IP和MAC地址
- Linux C 网络编程 - 获取本地 ip 地址,mac,通过域名获取对应的 ip
- java根据本地IP获取mac地址的方法
- MFC 获取本地电脑的IP和MAC地址
- C#编程之 如何获取本地和远程主机的IP及MAC地址
- C#获取本地计算机名,IP,MAC地址