QNetworkInterface类介绍

一、QNetworkInterface::InterfaceFlag (接口标志)

        这个枚举描述了网络接口当前的状态和具备的能力,是一个网卡的"状态标签"。

enum InterfaceFlag {
        IsUp = 0x1,
        IsRunning = 0x2,
        CanBroadcast = 0x4,
        IsLoopBack = 0x8,
        IsPointToPoint = 0x10,
        CanMulticast = 0x20
    };

        IsUp (0x1): 网络接口已启用("up"),即被管理员或系统激活。

        IsRunning (0x2): 网络接口正处于工作状态,通常意味着它已配置好并且物理上是连接的(例如网线已插入)。

        CanBroadcast (0x4): 接口支持广播模式。

        IsLoopBack (0x8): 这是一个回环接口(如常见的 127.0.0.1),它是一个虚拟接口,用于本机内部通信。

        IsPointToPoint (0x10): 接口是点对点连接,例如一个PPP拨号连接。

        CanMulticast (0x20): 接口支持多播(组播)。这个标志对我们进行组播编程至关重要,只有支持多播的接口才能用于加入组播组。

二、QNetworkInterface::InterfaceType (接口类型)

        这个枚举指明了接口的硬件类型。

enum InterfaceType {
        Loopback = 1,
        Virtual,
        Ethernet,
        Slip,
        CanBus,
        Ppp,
        Fddi,
        Wifi,
        Ieee80211 = Wifi,   // alias
        Phonet,
        Ieee802154,
        SixLoWPAN,  // 6LoWPAN, but we can't start with a digit
        Ieee80216,
        Ieee1394,

        Unknown = 0
    };

        Unknown: 类型未知。

        Loopback: 回环接口。

        Virtual: 虚拟接口(如VPN、隧道接口)。

        Ethernet: 以太网接口。        

        Wifi: Wi-Fi无线网络接口。

        此外,还有一些用于特殊网络的类型,如 CanBus、Ppp、SixLoWPAN 等。

三、核心成员函数 (Functions)

        这些函数让你可以获取接口的具体信息。你可以通过静态函数先获取所有接口,再通过每个接口对象的成员函数查询其属性。

    static QNetworkInterface interfaceFromName(const QString &name);
    static QNetworkInterface interfaceFromIndex(int index);
    static QList<QNetworkInterface> allInterfaces();
    static QList<QHostAddress> allAddresses();

静态函数(获取接口列表)

        QNetworkInterface interfaceFromName(const QString &name): 根据接口的名称(如 "eth0"、"en0" 或 "本地连接")获取对应的接口对象。

        QNetworkInterface interfaceFromIndex(int index): 根据系统分配的唯一索引号获取接口对象。

        QList<QNetworkInterface> allInterfaces(): 获取主机上所有网络接口的列表。这是最常用的入口函数。

        QList<QHostAddress> allAddresses(): 一个便捷函数,直接返回主机上所有IP地址的列表(不包含子网掩码等信息)。

四、成员函数(查询单个接口的属性)

    bool isValid() const;
    int index() const;
    int maximumTransmissionUnit() const;
    QString name() const;
    QString humanReadableName() const;
    InterfaceFlags flags() const;
    InterfaceType type() const;
    QString hardwareAddress() const;
    QList<QNetworkAddressEntry> addressEntries() const;

bool isValid(): 判断这个 QNetworkInterface 对象是否有效。

int index(): 返回系统为该接口分配的唯一索引号。

int maximumTransmissionUnit(): 返回该接口的最大传输单元值。

QString name(): 返回接口的系统内部名称(如 "eth0")。

QString humanReadableName(): 返回用户友好的名称(Windows上如 "以太网"),Unix系统上则通常和 name() 一样。

InterfaceFlags flags(): 返回接口标志组合,你可以用这个来判断接口当前状态(如是否已启用 IsUp,是否支持组播 CanMulticast)。

InterfaceType type(): 返回接口的硬件类型。QList<QNetworkAddressEntry> addressEntries(): 这是最重要的函数之一。它返回一个 QNetworkAddressEntry 对象的列表,每个对象都包含了一个IP地址及其对应的子网掩码和广播地址。

QString hardwareAddress(): 返回硬件地址,对于以太网就是大家常说的 MAC 地址,格式如 "01:23:45:67:89:ab"。

QList<QNetworkAddressEntry> addressEntries() const:获取该接口上的所有IP地址条目

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值