• 【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程序打包     

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

  • 相关阅读:
    *Triangle
    Pascal's Triangle II
    Pascal's Triangle
    Merge Sorted Array
    House Robber
    Find Peak Element
    Container With Most Water
    *Next Permutation
    top命令VIRT,RES,SHR,DATA
    Octave简单使用
  • 原文地址:https://www.cnblogs.com/13373-/p/11678111.html
Copyright © 2020-2023  润新知