QNetworkAddressEntry Class
QNetworkAddressEntry 类存储网络接口支持的一个 IP 地址及其相关的掩码和广播地址。更多
头文件: | #include <QNetworkAddressEntry> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Network) target_link_libraries(mytarget PRIVATE Qt6::Network) |
qmake: | QT += network |
- 所有成员(包括继承成员)的列表
- QNetworkAddressEntry 属于网络编程 API和隐式共享类。
注意:该类中的所有函数都是可重入的。
公共类型
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) |
成员类型文档
enum QNetworkAddressEntry::DnsEligibilityStatus
该枚举表示给定主机地址是否有资格在域名系统(DNS)或其他类似的名称解析机制中公布。一般来说,如果一个地址在一段不确定的时间内都能到达这台机器,那么这个地址就适合公布,但不一定是永久性的。例如,通过 DHCP 获取的地址通常符合条件,但加密生成的临时 IPv6 地址则不符合条件。
常数 | 值 | 说明 |
---|---|---|
QNetworkAddressEntry::DnsEligibilityUnknown | -1 | Qt 和操作系统无法确定是否应发布此地址。如果找不到符合条件的地址,应用程序可能需要进一步应用启发式方法。 |
QNetworkAddressEntry::DnsEligible | 1 | 该地址符合在 DNS 中发布的条件。 |
QNetworkAddressEntry::DnsIneligible | 0 | 该地址不应在 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)
将此地址的首选生命周期和有效生命周期分别设置为preferred 和validity 截止日期。调用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 地址的前缀长度设置为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 中引入。
© 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.