本页内容

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 地址和子网掩码相关的广播地址。通常可以通过将子网掩码中包含 0 的位在 IP 地址中设为 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::

另请参阅 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之间,且是表示地址的首选形式。

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

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

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

将该地址的首选生存期和有效生存期分别设置为preferred 和validity 的截止时间。调用此函数后,即使两个参数均为QDeadlineTimer::Forever ,isLifetimeKnown()也将返回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 地址的前缀长度设置为length 。length 的值必须符合此类 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 中引入。

© 2026 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.