QNetworkAddressEntry 类
QNetworkAddressEntry 类存储了一个网络接口支持的 IP 地址及其相关的子网掩码和广播地址。 更多...
头文件 | #include <QNetworkAddressEntry> |
CMake | find_package(Qt6 REQUIRED COMPONENTS Network) target_link_libraries(mytarget PRIVATE Qt6::Network) |
qmake | QT += network |
- 所有成员列表,包括继承成员
- QNetworkAddressEntry 是网络编程 API 和隐式共享类的部分。网络编程 API 和 隐式共享类。
注意: 此类中所有函数都是 可重入的。
公共类型
枚举 | 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 |
相关非成员
(自 6.2) QDebug | operator<<(QDebug debug, const QNetworkAddressEntry &entry) |
成员类型文档
枚举 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地址和子网掩码关联的广播地址。它通常可以通过将子网掩码中为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())。
另请参阅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截止日期。在这次调用之后,isLifetimeKnown()将返回
true,即使两个参数都是QDeadlineTimer::Forever。
另请参阅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。该值必须适用于此类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
如果此网络地址条目与其他不同,则返回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.在芬兰和其他国家/地区的商标。所有其他商标均为各自所有者的财产。