• Qt-获取主机网络信息之QNetworkInterface


          QNetworkInterface类提供了一个主机IP地址和网络接口的列表。

          QNetworkInterface表示了当前程序正在运行时与主机绑定的一个网络接口。每个网络接口可能包含0个或者多个IP地址,每个IP地址都可选择性地与一个子网掩码和(或)一个广播地址相关联。这样的列表可以通过QNetworkInterface的addressEntries()方法获得。作为一种可选的方案是,当子网掩码或者广播地址不是必须的,可以使用allAddresses()便捷函数来仅仅获得IP地址。

    注:QNetworkAddressEntry类存储了被网络接口所支持的一个IP地址,同时还有与之相关的子网掩码和广播地址。

    QNetworkInterface还使用hardwareAddress()方法报告接口的硬件地址。

    不是所有的操作系统都支持报告这些所有的特性。只有IPv4地址可以保证在所有平台上都能被这个类列举出来,尤其是IPv6地址的列举目前只支持Windows XP及相关版本、Linux、MacOS和BSDs。

    相关参考:QNetworkAddressEntry.

    成员函数:allAddresses() [static]

    这个便利函数返回在主机上面找到的所有的IP地址。它相当于对allInterfaces()返回的所有对象调用addressEntries()来获取QHostAddress对象列表,然后对这些对象调用QHostAddress::ip()方法。

     1 #include "mainwindow.h"
     2 #include <QHostAddress>
     3 #include <QNetworkInterface>
     4 #include <QNetworkAddressEntry>
     5 #include <QDebug>
     6 
     7 MainWindow::MainWindow(QWidget *parent)
     8     : QMainWindow(parent)
     9 {
    10     QList<QHostAddress> list = QNetworkInterface::allAddresses();
    11 
    12     for (int i = 0; i < list.size(); i++)
    13     {
    14         qDebug() << list.at(i);
    15     }
    16 }

    成员函数:allInterfaces() [static]

    返回一个在主机上找到的所有网络接口的列表。如果查找失败,则返回一个0个元素的列表。

     1 #include "mainwindow.h"
     2 #include <QHostAddress>
     3 #include <QNetworkInterface>
     4 #include <QNetworkAddressEntry>
     5 #include <QDebug>
     6 
     7 MainWindow::MainWindow(QWidget *parent)
     8     : QMainWindow(parent)
     9 {
    10     QList<QNetworkInterface> interface = QNetworkInterface::allInterfaces();
    11 
    12     for (int i = 0; i < interface.size(); i++)
    13     {
    14         qDebug() << interface.at(i);
    15         QNetworkInterface item = interface.at(i);
    16         QList<QNetworkAddressEntry> entryList = item.addressEntries();
    17         for (int j = 0; j < entryList.size(); j++)
    18         {
    19             qDebug() << "Item #" << j << entryList.at(j).ip();
    20         }
    21     }
    22 }

    成员函数:hardwareAddress() const

    返回这个接口的底层硬件地址。对于以太网接口,这将是一个用字符串表示的MAC地址,通过冒号来分隔。其他接口类型可能使用其他类型的硬件地址。实现不要依靠这个函数来返回一个合法的MAC地址。

     1 #include "mainwindow.h"
     2 #include <QHostAddress>
     3 #include <QNetworkInterface>
     4 #include <QNetworkAddressEntry>
     5 #include <QDebug>
     6 
     7 MainWindow::MainWindow(QWidget *parent)
     8     : QMainWindow(parent)
     9 {
    10     QList<QNetworkInterface> interface = QNetworkInterface::allInterfaces();
    11 
    12     for (int i = 0; i < interface.size(); i++)
    13     {
    14         QNetworkInterface item = interface.at(i);
    15         qDebug() << item.hardwareAddress();
    16     }
    17 }

    参考资料:《获取网络接口信息》-MyNote

  • 相关阅读:
    PCA算法---实验代码完整版(实验代码+数据集下载)
    ubuntu 系统 anaconda 虚拟环境下各种包的安装常用命令
    真实机下 ubuntu 18.04 安装GPU +CUDA+cuDNN 以及其版本选择(亲测非常实用)
    ubuntu 18.04/16.04/14.04 双硬盘分区方案
    如何制作 linux 系统 U盘启动盘
    pandas系列 read_excel() 和 to_excel()各参数详解
    pandas系列 read_csv 与 to_csv 方法各参数详解(全,中文版)
    pycharm 修改程序运行所需内存
    如何利用pandas 将excel文件与csv文件进行相互转化
    python读取文件时提示"UnicodeDecodeError: 'gbk' codec can't decode byte 0x80 in position 205: illegal multi
  • 原文地址:https://www.cnblogs.com/xiaomanon/p/3797071.html
Copyright © 2020-2023  润新知