QNetworkAddressEntry Class

QNetworkAddressEntry 类存储网络接口支持的一个 IP 地址及其相关的掩码和广播地址。更多

头文件: #include <QNetworkAddressEntry>
CMake: find_package(Qt6 REQUIRED COMPONENTS Network)
target_link_libraries(mytarget PRIVATE Qt6::Network)
qmake: QT += network

注意:该类中的所有函数都是可重入的

公共类型

enum DnsEligibilityStatus { DnsEligibilityUnknown, DnsEligible, DnsIneligible }

公共函数

QNetworkAddressEntry()
QNetworkAddressEntry(const QNetworkAddressEntry &other)
~QNetworkAddressEntry()
QHostAddress broadcast() const
void clearAddressLifetime()
QNetworkAddressEntry::DnsEligibilityStatus dnsEligibility() const
QHostAddress ip() const
bool isLifetimeKnown() const
bool isPermanent() const
bool isTemporary() const
QHostAddress netmask() const
QDeadlineTimer preferredLifetime() const
int prefixLength() const
void setAddressLifetime(QDeadlineTimer preferred, QDeadlineTimer validity)
void setBroadcast(const QHostAddress &newBroadcast)
void setDnsEligibility(QNetworkAddressEntry::DnsEligibilityStatus status)
void setIp(const QHostAddress &newIp)
void setNetmask(const QHostAddress &newNetmask)
void setPrefixLength(int length)
void swap(QNetworkAddressEntry &other)
QDeadlineTimer validityLifetime() const
bool operator!=(const QNetworkAddressEntry &other) const
QNetworkAddressEntry &operator=(const QNetworkAddressEntry &other)
bool operator==(const QNetworkAddressEntry &other) const
(since 6.2) QDebug operator<<(QDebug debug, const QNetworkAddressEntry &entry)

详细说明

每个网络接口可以包含零个或多个 IP 地址,而这些地址又可以与网络掩码和/或广播地址(取决于操作系统的支持)相关联。

该类就代表了这样一组地址。

成员类型文档

enum QNetworkAddressEntry::DnsEligibilityStatus

该枚举表示给定主机地址是否有资格在域名系统(DNS)或其他类似的名称解析机制中公布。一般来说,如果一个地址在一段不确定的时间内都能到达这台机器,那么这个地址就适合公布,但不一定是永久性的。例如,通过 DHCP 获取的地址通常符合条件,但加密生成的临时 IPv6 地址则不符合条件。

常数说明
QNetworkAddressEntry::DnsEligibilityUnknown-1Qt 和操作系统无法确定是否应发布此地址。如果找不到符合条件的地址,应用程序可能需要进一步应用启发式方法。
QNetworkAddressEntry::DnsEligible1该地址符合在 DNS 中发布的条件。
QNetworkAddressEntry::DnsIneligible0该地址不应在 DNS 中公布,也不应传输给其他方,除非作为传出数据包的源地址。

另请参阅 dnsEligibility() 和setDnsEligibility()。

成员函数文档

QNetworkAddressEntry::QNetworkAddressEntry()

构造一个空的 QNetworkAddressEntry 对象。

QNetworkAddressEntry::QNetworkAddressEntry(const QNetworkAddressEntry &other)

构造一个 QNetworkAddressEntry 对象,它是other 对象的副本。

[noexcept] QNetworkAddressEntry::~QNetworkAddressEntry()

销毁QNetworkAddressEntry 对象。

QHostAddress QNetworkAddressEntry::broadcast() const

返回与 IPv4 地址和网络掩码相关联的广播地址。通常可以通过将 IP 地址中网络掩码为 0 的比特位设置为 1 来获得该地址(换句话说,将 IP 地址与网络掩码的倒数进行比特运算)。

对于 IPv6 地址来说,这个成员总是空的,因为该系统已经放弃了广播的概念,转而使用组播。特别是,本地网络中所有节点对应的主机组可通过 "全节点 "特殊组播组(地址 FF02::1)到达。

另请参阅 setBroadcast().

void QNetworkAddressEntry::clearAddressLifetime()

重置该地址的首选生命周期和有效生命周期。调用isLifetimeKnown() 后,将返回false

另请参阅 preferredLifetime()、validityLifetime()、isLifetimeKnown() 和setAddressLifetime()。

QNetworkAddressEntry::DnsEligibilityStatus QNetworkAddressEntry::dnsEligibility() const

返回该地址是否符合在域名系统(DNS)或类似名称解析机制中发布的条件。

一般来说,如果一个地址在一段不确定的时间内都能联系到这台机器,那么这个地址就适合发布,尽管它不一定是永久性的。例如,通过 DHCP 获取的地址通常符合条件,但加密生成的临时 IPv6 地址则不符合条件。

在某些系统中,QNetworkInterface 需要启发式地确定哪些地址符合条件。

另请参阅 isLifetimeKnown()、isPermanent() 和setDnsEligibility()。

QHostAddress QNetworkAddressEntry::ip() const

该函数返回在网络接口中找到的一个 IPv4 或 IPv6 地址。

另请参见 setIp()。

bool QNetworkAddressEntry::isLifetimeKnown() const

如果地址生命周期已知,则返回true ;如果不知道,则返回false 。如果地址生命周期未知,preferredLifetime() 和validityLifetime() 都将返回QDeadlineTimer::Forever

另请参阅 preferredLifetime()、validityLifetime()、setAddressLifetime() 和clearAddressLifetime()。

bool QNetworkAddressEntry::isPermanent() const

如果该地址在该接口上是永久地址,则返回true ;如果是临时地址,则返回false 。永久地址没有过期时间,通常是静态地址(手动配置)。

如果无法确定该信息,该函数将返回true

注意: 根据操作系统和网络配置工具的不同,如果工具没有正确告知操作系统详细信息,临时地址有可能被解释为永久地址。

另请参阅 isLifetimeKnown()、validityLifetime() 和isTemporary()。

bool QNetworkAddressEntry::isTemporary() const

如果该地址是该接口上的临时地址,则返回true ;如果是永久地址,则返回false

另请参阅 isLifetimeKnown()、validityLifetime() 和isPermanent()。

QHostAddress QNetworkAddressEntry::netmask() const

返回与 IP 地址相关的掩码。掩码以 IP 地址的形式表示,如 255.255.0.0。

对于 IPv6 地址,前缀长度会转换为地址,其中置 1 的位数等于前缀长度。对于 64 位的前缀长度(最常见的值),网络掩码将表示为QHostAddress ,地址为 FFFF:FFFF:FFFF:FFFF:FFFF::

另请参阅 setNetmask() 和prefixLength()。

QDeadlineTimer QNetworkAddressEntry::preferredLifetime() const

如果已知,返回该地址变为废弃地址(不再首选)的截止日期。如果不知道地址的使用期限(参见isLifetimeKnown() ),该函数将始终返回QDeadlineTimer::Forever

当地址为首选地址时,操作系统可能会将其用作新的传出数据包的源地址。在该地址被弃用后,它将继续对传入数据包有效一段时间,直到最终被移除(参见validityLifetime() )。

另请参阅 validityLifetime()、isLifetimeKnown()、setAddressLifetime() 和clearAddressLifetime()。

int QNetworkAddressEntry::prefixLength() const

返回此 IP 地址的前缀长度。前缀长度与掩码中设置为 1 的位数一致(参见netmask())。对于 IPv4 地址,该值介于 0 和 32 之间。对于 IPv6 地址,前缀长度介于 0 和 128 之间,是表示地址的首选形式。

如果无法确定前缀长度,该函数将返回-1(即netmask() 返回空 QHostAddress())。

另请参阅 setPrefixLength() 和netmask()。

void QNetworkAddressEntry::setAddressLifetime(QDeadlineTimer preferred, QDeadlineTimer validity)

将此地址的首选生命周期和有效生命周期分别设置为preferredvalidity 截止日期。调用isLifetimeKnown() 后,即使两个参数都是QDeadlineTimer::Forever ,也会返回true

另请参阅 preferredLifetime()、validityLifetime()、isLifetimeKnown() 和clearAddressLifetime()。

void QNetworkAddressEntry::setBroadcast(const QHostAddress &newBroadcast)

QNetworkAddressEntry 对象的广播 IP 地址设置为newBroadcast

另请参阅 broadcast()。

void QNetworkAddressEntry::setDnsEligibility(QNetworkAddressEntry::DnsEligibilityStatus status)

将此地址的 DNS 合格标志设置为status

另请参阅 dnsEligibility()。

void QNetworkAddressEntry::setIp(const QHostAddress &newIp)

QNetworkAddressEntry 对象包含的 IP 地址设置为newIp

另请参阅 ip() 。

void QNetworkAddressEntry::setNetmask(const QHostAddress &newNetmask)

QNetworkAddressEntry 对象包含的网络掩码设置为newNetmask 。设置网络掩码的同时也会设置前缀长度,使其与新的网络掩码相匹配。

另请参阅 netmask() 和setPrefixLength()。

void QNetworkAddressEntry::setPrefixLength(int length)

将此 IP 地址的前缀长度设置为lengthlength 的值必须对此类 IP 地址有效:IPv4 地址介于 0 和 32 之间,IPv6 地址介于 0 和 128 之间。设置为任何无效值都等同于设置为-1,即 "无前缀长度"。

设置前缀长度也会设置掩码(参见netmask() )。

另请参见 prefixLength() 和setNetmask()。

[noexcept] void QNetworkAddressEntry::swap(QNetworkAddressEntry &other)

将此网络地址条目实例与other 互换。该操作速度非常快,而且从未出现过故障。

QDeadlineTimer QNetworkAddressEntry::validityLifetime() const

返回该地址变为无效并从网络堆栈中移除的截止时间(如果知道)。如果不知道地址的有效期(参见isLifetimeKnown() ),该函数将始终返回QDeadlineTimer::Forever

当地址有效时,操作系统会将其作为本机的有效目标地址。至于是否将其用作新的传出数据包的源地址,除其他规则外,还受首选生命周期(参见preferredLifetime()) 的控制。

另请参阅 preferredLifetime()、isLifetimeKnown()、setAddressLifetime() 和clearAddressLifetime()。

bool QNetworkAddressEntry::operator!=(const QNetworkAddressEntry &other) const

如果该网络地址条目不同于other ,则返回true

QNetworkAddressEntry &QNetworkAddressEntry::operator=(const QNetworkAddressEntry &other)

复制QNetworkAddressEntry 对象other

bool QNetworkAddressEntry::operator==(const QNetworkAddressEntry &other) const

如果此网络地址条目与other 相同,则返回true

相关非会员

[since 6.2] QDebug operator<<(QDebug debug, const QNetworkAddressEntry &entry)

QNetworkAddressEntry entry 写入数据流,并返回对debug 数据流的引用。

此函数在 Qt 6.2 中引入。

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.