正文:
最近在做远程登陆需要用到电脑得mac地址,故学习后写下此文以为笔记。
注:都记得加网络模块QT += network和头文件哈。
内容:
qt获取本地mac,ipv6,ipv6,电脑名字。
cmd获得本地ip信息,本机配置信息。
正文:
1.获取计算机名称和ip信息
QString localHostName = QHostInfo::localHostName(); qDebug() << "localHostName:" << localHostName; //计算机名
QHostInfo info = QHostInfo::fromName(localHostName); //通过主机名获得主机信息 qDebug() << "IP Address:" << info.addresses(); //输出主机信息中的IP地址信息
第二个获取2个字段,第一个是本地的ipv6,一个是默认的即ipv4.
2.下面用函数来获取ip,mac,计算机名称。
1 QString name = get_localmachine_name(); 2 qDebug() << "电脑名字:" << name; 3 4 //本机连接名 5 QString Widget::get_localmachine_name() 6 { 7 QString machineName=QHostInfo::localHostName(); 8 return machineName; 9 }
1 QString ip = getHostIpAddress(); 2 qDebug() << "ip:" << ip; 3 4 //ip 5 QString Widget::getHostIpAddress() 6 { 7 QString strIpAddress; 8 QList<QHostAddress> ipAddressesList = QNetworkInterface::allAddresses(); 9 // 获取第一个本主机的IPv4地址 10 int nListSize = ipAddressesList.size(); 11 for (int i = 0; i < nListSize; ++i) 12 { 13 if (ipAddressesList.at(i) != QHostAddress::LocalHost && 14 ipAddressesList.at(i).toIPv4Address()) { 15 strIpAddress = ipAddressesList.at(i).toString(); 16 break; 17 } 18 } 19 // 如果没有找到,则以本地IP地址为IP 20 if (strIpAddress.isEmpty()) 21 strIpAddress = QHostAddress(QHostAddress::LocalHost).toString(); 22 return strIpAddress; 23 }
1 QString mac = getHostMacAddress(); 2 qDebug() << "mac:" << mac; 3 4 //mac 5 QString Widget::getHostMacAddress() 6 { 7 QList<QNetworkInterface> nets = QNetworkInterface::allInterfaces();// 获取所有网络接口列表 8 int nCnt = nets.count(); 9 QString strMacAddr = ""; 10 for(int i = 0; i < nCnt; i ++) 11 { 12 // 如果此网络接口被激活并且正在运行并且不是回环地址,则就是我们需要找的Mac地址 13 if(nets[i].flags().testFlag(QNetworkInterface::IsUp) && nets[i].flags().testFlag(QNetworkInterface::IsRunning) && !nets[i].flags().testFlag(QNetworkInterface::IsLoopBack)) 14 { 15 strMacAddr = nets[i].hardwareAddress(); 16 break; 17 } 18 } 19 return strMacAddr; 20 }
这里的ip获取获取的是默认ip即ipv4但不是本地ip(本地ip是局域网ip通常为192.168.xxx.xxx)。
3.利用cmd方式pingip或者查看ip和电脑配置。
说明:cmd是win下的dos终端,这里运行的也是命令行模式。通过window+R输入cmd即可打开dos终端。运行下面命令。
3.1.dos查看ip:ipconfig/all。//可以不要all,显示的简单些
3.2.dos查看本机配置:systeminfo。//电脑信息基本都有。
3.3.qt点击按钮查看这些信息(由于不想水文,只演示pingip大家简单替换就好)。
1 //ping什么 2 void Dialog::on_pushButton_clicked() 3 { 4 QString cmd = ui->lineEdit->text(); 5 if(cmd == NULL){ 6 }else{ 7 ui->textEdit->setText(NULL); 8 QProcess p(0); 9 p.start("cmd", QStringList()<<"/c"<<"ping " << cmd); 10 p.waitForStarted(); 11 p.waitForFinished(); 12 QString strTemp=QString::fromLocal8Bit(p.readAllStandardOutput()); 13 ui->textEdit->setText(strTemp);//将ping的内容展示 14 } 15 }
只要是dos终端可以输入的命令行,都可以在这里使用。只要简单替换掉
这一块就可以了。
后记:
利用这个方法,在结合一下子qt程序打包
,自己写点小程序,简直不要太美滋滋了。