Linux获取本机IP、MAC示例程序
2009-09-24 16:36
295 查看
#include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include <sys/ioctl.h> #include <net/if.h> #include <stdio.h> #include <string> #include <iostream> #include <cstring> using namespace std; void peek_interfaces(int fd); void print_hw_addr(int fd, const char* if_name); int main() { int fd = socket(AF_INET, SOCK_DGRAM, 0); if(-1 == fd) { perror("Failed create socket."); return -1; } peek_interfaces(fd); close(fd); return 0; } void peek_interfaces(int fd) { ifreq ifs[16] = {0}; ifconf conf = {sizeof(ifs)}; conf.ifc_req = ifs; if(-1 == ioctl(fd, SIOCGIFCONF, &conf)) { perror("Failed IOCTL SIOCGIFCONF."); return; } if(conf.ifc_len >= sizeof(ifs)) { perror("Buffer too small for IOCTL SIOCGIFCONF."); return; } int num = conf.ifc_len / sizeof(ifreq); cout << num << " interface entry retrieved." << endl; for(int i = 0; i < num; ++i) { cout << "[ " << ifs[i].ifr_name << " ]" << endl; sockaddr_in* sai = (sockaddr_in*)&ifs[i].ifr_addr; cout << "Addr: " << inet_ntoa(sai->sin_addr) << endl; print_hw_addr(fd, ifs[i].ifr_name); cout << endl; } } void print_hw_addr(int fd, const char* if_name) { ifreq req = {0}; strcpy(req.ifr_name, if_name); if(-1 == ioctl(fd, SIOCGIFFLAGS, &req)) { perror("Failed IOCTL SIOCGIFFLAGS."); return; } if(req.ifr_flags & IFF_LOOPBACK) { cout << "Is LOOPBACK." << endl; return; } if(-1 == ioctl(fd, SIOCGIFHWADDR, &req)) { perror("Failed IOCTL SIOCGIFHWADDR."); return; } unsigned char* puc = (unsigned char*)req.ifr_hwaddr.sa_data; printf("HW addr: %02x:%02x:%02x:%02x:%02x:%02x/n", puc[0], puc[1], puc[2], puc[3], puc[4], puc[5]); }
相关文章推荐
- Linux环境下获取当前主机的IP/MAC等信息(C/C++)
- linux下java程序获取本机MAC地址
- Linux下获取IP、MAC、掩码的shell脚本
- 获取linux机器的IP和mac地址
- Linux C 网络编程 - 获取本地 ip 地址,mac,通过域名获取对应的 ip
- linux下获取/设置mac和ip
- Linux下获取IP、MAC、网关、掩码的shell脚本
- windows和linux下执行java程序+获取本机IP
- 嵌入式 最精简的程序获取IP以及广播地址示例
- 用VB 写程序 获取MAC ,IP ,hd ,CPU,内存,电脑名称等信息
- linux 系统获取网络ip, mask, gateway, dns信息小程序
- 程序内执行shell命令自动获取局域网内所有在线IP和开放端口(Linux)
- java程序获取IP、MAC相关地址属性
- Linux 下获取LAN中指定IP的网卡的MAC(物理地址)
- linux 下C实现获取网卡IP和MAC地址
- linux下获取本机ip、netmask、broadcast、mac
- linux 系统获取网络ip, mask, gateway, dns信息小程序
- 用纯Java代码根据IP获取windows和linux的MAC物理地址
- Linux下获取系统的IP,子网掩码,网关,MAC和配置文件的修改
- ZZ-linux中获取IP和MAC