QNetworkAddressEntry 类

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

头文件 #include <QNetworkAddressEntry>
CMakefind_package(Qt6 REQUIRED COMPONENTS Network)
target_link_libraries(mytarget PRIVATE Qt6::Network)
qmakeQT += network

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

公共类型

枚举DnsEligibilityStatus { DnsEligibilityUnknown, DnsEligible, DnsIneligible }

公共函数

QNetworkAddressEntry()
QNetworkAddressEntry(const QNetworkAddressEntry &other)
~QNetworkAddressEntry()
QHostAddressbroadcast() const
voidclearAddressLifetime()
QNetworkAddressEntry::DnsEligibilityStatusdnsEligibility() const
QHostAddressip() const
boolisLifetimeKnown() const
boolisPermanent() const
boolisTemporary() const
QHostAddressnetmask() const
QDeadlineTimerpreferredLifetime() const
intprefixLength() const
voidsetAddressLifetime(QDeadlineTimer preferred, QDeadlineTimer validity)
voidsetBroadcast(const QHostAddress &newBroadcast)
voidsetDnsEligibility(QNetworkAddressEntry::DnsEligibilityStatus status)
voidsetIp(const QHostAddress &newIp)
voidsetNetmask(const QHostAddress &newNetmask)
voidsetPrefixLength(int length)
voidswap(QNetworkAddressEntry &other)
QDeadlineTimervalidityLifetime() const
booloperator!=(const QNetworkAddressEntry &other) const
QNetworkAddressEntry &operator=(const QNetworkAddressEntry &other)
booloperator==(const QNetworkAddressEntry &other) const
(自 6.2) QDebugoperator<<(QDebug debug, const QNetworkAddressEntry &entry)

详细说明

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

此类表示此类组的一个示例。

成员类型文档

枚举 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的位设置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())。

另请参阅validityLifetimeisLifetimeKnownsetAddressLifetimeclearAddressLifetime

int QNetworkAddressEntry::prefixLength() const

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

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

另请参阅setPrefixLengthnetmask

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

将此地址的推荐和有效生命周期分别设置为
preferred
validity截止日期。在这次调用之后,isLifetimeKnown()将返回
true,即使两个参数都是QDeadlineTimer::Forever

另请参阅preferredLifetimevalidityLifetimeisLifetimeKnownclearAddressLifetime

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。该值必须适用于此类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))控制的。

另请参阅preferredLifetimeisLifetimeKnownsetAddressLifetimeclearAddressLifetime

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

如果此网络地址条目与其他不同,则返回true

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

复制QNetworkAddressEntry对象other

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

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

相关非成员函数

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

QNetworkAddressEntry 条目写入流中,并返回<)i translate="no">调试流的引用。

此函数在Qt 6.2版本中引入。

© 2024 The Qt Company Ltd. 本文档内的贡献内容均为各自所有者的版权。此处提供的文档受GNU自由文档许可证版本1.3的条款许可,由自由软件基金会发布。Qt及其相关标识为The Qt Company Ltd.在芬兰和其他国家/地区的商标。所有其他商标均为各自所有者的财产。