正文:
最近在做远程登陆需要用到电脑得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程序打包
,自己写点小程序,简直不要太美滋滋了。
