LINUX下QT与C语言通过网卡名获取网卡IP与MAC
2015-09-21 16:06
344 查看
1、QT下
2、C语言下
QString RuntimeConfig::ipAddress(QString network) { QList<QNetworkAddressEntry> list; QString localIPaddress; QNetworkInterface interface = QNetworkInterface::interfaceFromName(network); list = interface.addressEntries(); if (!list.isEmpty()) { localIPaddress = list.at(0).ip().toString(); } return localIPaddress; } QString RuntimeConfig::macAddress(QString network) { QList<QNetworkInterface> netList; int netCount; int neti; QNetworkInterface myNet; netList = QNetworkInterface::allInterfaces(); netCount = netList.count(); for (neti = 0; neti < netCount; neti ++) { if (netList.at(neti).isValid() && netList.at(neti).name() == network) { myNet = netList.at(neti); break; } } return (myNet.hardwareAddress()); }
2、C语言下
#include <stdio.h> #include <string.h> #include <sys/types.h> #include <sys/socket.h> #include <sys/ioctl.h> #include <netinet/in.h> #include <net/if.h> #include <net/if_arp.h> #include <arpa/inet.h> #include <errno.h> #include "getinfo.h" int getip(char *ip, char *name) { int sock; struct sockaddr_in sin; struct ifreq ifr; sock = socket(AF_INET, SOCK_DGRAM, 0); if (sock == -1) { perror("socket"); return -1; } strncpy(ifr.ifr_name, name, IFNAMSIZ); ifr.ifr_name[IFNAMSIZ - 1] = 0; if (ioctl(sock, SIOCGIFADDR, &ifr) < 0) { perror("ioctl"); return -1; } memcpy(&sin, &ifr.ifr_addr, sizeof(sin)); sprintf(ip, "%s", inet_ntoa(sin.sin_addr)); return 0; } int getmac(char *mac, char *name) { struct ifreq ifreq; int sock; if((sock=socket(AF_INET,SOCK_STREAM,0)) <0) { perror( "socket "); return 2; } strcpy(ifreq.ifr_name, name); if(ioctl(sock,SIOCGIFHWADDR,&ifreq) <0) { perror( "ioctl "); return 3; } sprintf(mac, "%02x:%02x:%02x:%02x:%02x:%02x", (unsigned char)ifreq.ifr_hwaddr.sa_data[0], (unsigned char)ifreq.ifr_hwaddr.sa_data[1], (unsigned char)ifreq.ifr_hwaddr.sa_data[2], (unsigned char)ifreq.ifr_hwaddr.sa_data[3], (unsigned char)ifreq.ifr_hwaddr.sa_data[4], (unsigned char)ifreq.ifr_hwaddr.sa_data[5]); return 0; }
相关文章推荐
- linux 显示所在项目当前分支及git状态
- 修改Linux时间一般涉及到3个命令: date, clock, hwclock
- linux算数运算
- Linux下常见的性能分析工具
- 人手一份核武器:Android手机装Kali Linux
- 解决xManager、putty等工具ssh连接linux中文乱码
- Linux下的有名管道(03)---使用函数创建和删除有名管道
- 【Linux导论】Linux文件系统基础(Linux Filesystem Basics)
- Linux下调试core dump文件的方法
- 你值得拥有:25 个 Linux 性能监控工具
- Centos6.5搭建svn服务器
- mac下配置Linux阿里云服务器的web环境—入门篇
- 写Linux应用读写IIC 总线上的24c02 ,验证驱动是否正确
- CentOS6.x 64位下mysql5.5.25安装图解教程
- centos6.5安装jetty服务器
- Linux 基础知识:变量键盘读取、数组与声明
- linux/UNIX上的inode、硬链接以及软连接
- Linux下Firefox和chrome浏览器flash插件的安装
- centos 6.5安装GitLab安装
- 记录一次linux错误的修复(linux启动出现UNEXPECTED INCONSISTENCY;RUN fsck MANUALLY)