其他分享
首页 > 其他分享> > 【win】【qt5】【本地网络相关信息,诸如ip,mac等】

【win】【qt5】【本地网络相关信息,诸如ip,mac等】

作者:互联网

正文:

  最近在做远程登陆需要用到电脑得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 }
ip

 

 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 }
mac

 

  这里的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 }
qt调用cmd命令

 

  只要是dos终端可以输入的命令行,都可以在这里使用。只要简单替换掉

  这一块就可以了。

 

后记:

  利用这个方法,在结合一下子qt程序打包     

,自己写点小程序,简直不要太美滋滋了。

 

标签:qt5,ip,cmd,mac,QString,win,qDebug,nets,本地网络
来源: https://www.cnblogs.com/13373-/p/11678111.html