一、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地址条目
5228

被折叠的 条评论
为什么被折叠?



