PySide6.QtNetwork.QHostAddress

class QHostAddress

QHostAddress 类提供了一个IP地址。更多

概要

方法

静态函数

注意

本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。

详细描述

此类以平台和协议无关的方式保存IPv4或IPv6地址。

QHostAddress 通常与 QTcpSocketQTcpServerQUdpSocket 一起使用,用于连接到主机或设置服务器。

主机地址通过setAddress()设置,并通过toIPv4Address()toIPv6Address()toString()获取。您可以使用protocol()检查类型。

注意

请注意,QHostAddress 不执行DNS查找。为此需要 QHostInfo

该类还支持常见的预定义地址:NullLocalHostLocalHostIPv6BroadcastAny

class SpecialAddress

常量

描述

QHostAddress.Null

空地址对象。等同于 QHostAddress() 。另请参阅 isNull()

QHostAddress.LocalHost

IPv4 本地主机地址。等同于 QHostAddress (“127.0.0.1”)。

QHostAddress.LocalHostIPv6

IPv6本地主机地址。等同于QHostAddress (“::1”)。

QHostAddress.Broadcast

IPv4广播地址。等同于QHostAddress (“255.255.255.255”)。

QHostAddress.AnyIPv4

IPv4 任意地址。等同于 QHostAddress (“0.0.0.0”)。绑定此地址的套接字将仅在 IPv4 接口上监听。

QHostAddress.AnyIPv6

IPv6 任意地址。等同于 QHostAddress (“::”)。绑定此地址的套接字将仅在 IPv6 接口上监听。

QHostAddress.Any

双栈任意地址。绑定此地址的套接字将在IPv4和IPv6接口上监听。

class ConversionModeFlag

常量

描述

QHostAddress.StrictConversion

(继承自 enum.Flag) 在比较两个不同协议的 QHostAddress 对象时,不要将 IPv6 地址转换为 IPv4,因此它们将始终被视为不同。

QHostAddress.ConvertV4MappedToIPv4

在比较时转换IPv4映射的IPv6地址(RFC 4291第2.5.5.2节)。因此QHostAddress(“::ffff:192.168.1.1”)将与QHostAddress(“192.168.1.1”)相等。

QHostAddress.ConvertV4CompatToIPv4

在比较时转换IPv4兼容的IPv6地址(RFC 4291第2.5.5.1节)。因此QHostAddress(“::192.168.1.1”)将与QHostAddress(“192.168.1.1”)相等。

QHostAddress.ConvertLocalHost

在比较时将IPv6环回地址转换为其IPv4等效地址。因此,例如QHostAddress (“::1”) 将等于QHostAddress (“127.0.0.1”)。

QHostAddress.ConvertUnspecifiedAddress

所有未指定的地址将被视为相等,即 AnyIPv4AnyIPv6 和 Any。

QHostAddress.TolerantConversion

设置所有前面的三个标志。

另请参阅

isEqual()

PySide6.QtNetwork.QHostAddress.IPv4Protocol
PySide6.QtNetwork.QHostAddress.IPv6Protocol
PySide6.QtNetwork.QHostAddress.AnyIPProtocol
PySide6.QtNetwork.QHostAddress.UnknownNetworkLayerProtocol
__init__()

构造一个空的主机地址对象,即一个对任何主机或接口都无效的地址。

另请参阅

clear()

__init__(address)
Parameters:

地址SpecialAddress

address 构造一个 QHostAddress 对象。

__init__(copy)
Parameters:

复制QHostAddress

构造给定address的副本。

__init__(ip6Addr)
Parameters:

ip6AddrQIPv6Address

__init__(address)
Parameters:

地址 – str

根据字符串 address(例如,“127.0.0.1”)构造一个IPv4或IPv6地址。

另请参阅

setAddress()

__init__(ip4Addr)
Parameters:

ip4Addr – int

使用IPv4地址ip4Addr构造一个主机地址对象。

clear()

将主机地址设置为空,并将协议设置为UnknownNetworkLayerProtocol

另请参阅

Null

isBroadcast()
Return type:

布尔

如果地址是IPv4广播地址,则返回true,否则返回false。IPv4广播地址是255.255.255.255。

请注意,此函数不会对IPv4网络的本地广播地址返回true。为此,请使用QNetworkInterface来获取本地机器的广播地址。

isEqual(address[, mode=QHostAddress.ConversionModeFlag.TolerantConversion])
Parameters:
Return type:

布尔

如果此主机地址与给定的other地址相同,则返回true;否则返回false

参数 mode 控制在不同协议地址之间执行哪些转换。如果未提供 mode,则默认执行 TolerantConversion

另请参阅

ConversionMode operator==()

isGlobal()
Return type:

布尔

如果地址是IPv4或IPv6全局地址,则返回true,否则返回false。全局地址是指不保留用于特殊用途(如环回或多播)或未来用途的地址。

请注意,IPv6 唯一本地单播地址被视为全局地址(参见 isUniqueLocalUnicast()),RFC 1918 为本地网络保留的 IPv4 地址也是如此。

另请注意,IPv6 站点本地地址已被弃用,在新应用程序中应视为全局地址。此函数对于站点本地地址也返回 true。

isInSubnet(subnet)
Parameters:

subnet – .std.pairQHostAddress,int

Return type:

布尔

这是一个重载函数。

如果此IP在由subnet描述的子网中,则返回truesubnetQHostAddress成员包含网络前缀,而int(第二个)成员包含网络掩码(前缀长度)。

isInSubnet(subnet, netmask)
Parameters:
Return type:

布尔

如果此IP位于由网络前缀subnet和网络掩码netmask描述的子网中,则返回true

如果一个IP地址位于某个子网的最低地址和最高地址之间,则认为该IP地址属于该子网。在IP版本4的情况下,最低地址是网络地址,而最高地址是广播地址。

subnet 参数不必是实际的网络地址(子网中的最低地址)。它可以是属于该子网的任何有效IP。特别是,如果它等于此对象持有的IP地址,此函数将始终返回true(前提是网络掩码是有效值)。

另请参阅

parseSubnet()

isLinkLocal()
Return type:

布尔

如果地址是IPv4或IPv6的链路本地地址,则返回true,否则返回false

IPv4 链路本地地址是网络 169.254.0.0/16 中的一个地址。IPv6 链路本地地址是网络 fe80::/10 中的一个地址。有关更多信息,请参阅 IANA IPv6 地址空间 注册表。

isLoopback()
Return type:

布尔

如果地址是IPv6环回地址或任何IPv4环回地址,则返回true

isMulticast()
Return type:

布尔

如果地址是IPv4或IPv6多播地址,则返回true,否则返回false

isNull()
Return type:

布尔

如果此主机地址对任何主机或接口无效,则返回 true

默认构造函数创建一个空地址。

另请参阅

Null

isPrivateUse()
Return type:

布尔

如果地址是IPv6唯一本地单播地址或由RFC 1918保留用于本地网络的IPv4地址,则返回true,否则返回false

isSiteLocal()
Return type:

布尔

如果地址是IPv6站点本地地址,则返回true,否则返回false

IPv6站点本地地址是网络fec0::/10中的一个地址。有关更多信息,请参阅IANA IPv6地址空间注册表。

IPv6站点本地地址已被弃用,新应用程序不应依赖此地址。新应用程序不应依赖此功能,并应将站点本地地址视为与全局地址相同(这就是为什么isGlobal()也返回true的原因)。站点本地地址已被唯一本地地址(ULA)取代。

isUniqueLocalUnicast()
Return type:

布尔

如果地址是IPv6唯一本地单播地址,则返回true,否则返回false

IPv6 唯一本地单播地址是网络 fc00::/7 中的一个地址。有关更多信息,请参阅 IANA IPv6 地址空间 注册表。

请注意,唯一的本地单播地址也被视为全局地址。RFC 4193 指出,实际上,“应用程序可以将这些地址视为全局范围的地址。”只有路由器需要关心这种区别。

__ne__(address)
Parameters:

地址SpecialAddress

Return type:

布尔

如果此主机地址与给定的other地址不同,则返回true;否则返回false

__ne__(address)
Parameters:

地址QHostAddress

Return type:

布尔

如果此主机地址与给定的other地址不相同,则返回true;否则返回false

__eq__(address)
Parameters:

地址SpecialAddress

Return type:

布尔

如果此主机地址与给定的other地址相同,则返回true;否则返回false

__eq__(address)
Parameters:

地址QHostAddress

Return type:

布尔

如果此主机地址与给定的other地址相同,则返回true;否则返回false。此运算符仅调用isEqual (other, StrictConversion)。

另请参阅

isEqual()

static parseSubnet(subnet)
Parameters:

子网 – str

Return type:

.std.pairQHostAddress,int

解析包含在subnet中的IP和子网信息,并返回该网络的网络前缀及其前缀长度。

IP地址和网络掩码必须用斜杠(/)分隔。

此函数支持以下形式的参数:

  • 123.123.123.123/n 其中 n 是 0 到 32 之间的任意值

  • 123.123.123.123/255.255.255.255

  • /n 其中 n 是 0 到 128 之间的任意值

对于IP版本4,此函数同样接受缺少尾部组件的情况(即少于4个八位组,如“192.168.1”),后面可以跟或不跟一个点。如果在这种情况下也缺少网络掩码,则将其设置为实际传递的八位组数(在上面的示例中,对于3个八位组,它将是24)。

另请参阅

isInSubnet()

protocol()
Return type:

NetworkLayerProtocol

返回主机地址的网络层协议。

scopeId()
Return type:

字符串

返回IPv6地址的范围ID。对于IPv4地址,或者如果地址不包含范围ID,则返回一个空的QString。

IPv6 范围 ID 指定了非全局 IPv6 地址的可达性范围,限制了地址可以使用的区域。所有 IPv6 地址都与这样的可达性范围相关联。范围 ID 用于消除不保证全局唯一的地址的歧义。

IPv6 指定了以下四个级别的可达性:

  • 节点本地:仅用于与同一接口上的服务通信的地址(例如,环回接口“::1”)。

  • 链路本地地址:网络接口(链路)本地的地址。您的主机上的每个IPv6接口始终有一个链路本地地址。链路本地地址(“fe80…”)是从本地网络适配器的MAC地址生成的,不能保证唯一。

  • 全局:适用于全局可路由的地址,例如互联网上的公共服务器。

当使用IPv6连接的链路本地或站点本地地址时,必须指定范围ID。链路本地地址的范围ID通常与接口名称(例如,“eth0”,“en1”)或编号(例如,“1”,“2”)相同。

setAddress(address)
Parameters:

地址SpecialAddress

这是一个重载函数。

设置由address指定的特殊地址。

setAddress(ip6Addr)
Parameters:

ip6AddrQIPv6Address

setAddress(address)
Parameters:

地址 – str

Return type:

布尔

这是一个重载函数。

设置由address指定的字符串表示形式指定的IPv4或IPv6地址(例如“127.0.0.1”)。如果地址成功解析,则返回true并设置地址;否则返回false

setAddress(ip4Addr)
Parameters:

ip4Addr – int

设置由ip4Addr指定的IPv4地址。

setScopeId(id)
Parameters:

id – str

将地址的IPv6范围ID设置为id。如果地址协议不是IPv6,此函数不执行任何操作。范围ID可以设置为接口名称(如“eth0”或“en1”)或表示接口索引的整数。如果id是接口名称,QtNetwork将在调用操作系统网络函数之前使用interfaceIndexFromName()将其转换为接口索引。

swap(other)
Parameters:

其他QHostAddress

将此主机地址与 other 交换。此操作非常快速且永远不会失败。

toIPv4Address([ok=None])
Parameters:

ok – 布尔值

Return type:

整数

返回IPv4地址作为一个数字。

例如,如果地址是127.0.0.1,返回的值是2130706433(即0x7f000001)。

如果protocol()IPv4Protocol,或者协议是IPv6Protocol且IPv6地址是IPv4映射地址(RFC4291),则此值有效。在这些情况下,ok将被设置为true。否则,它将被设置为false。

另请参阅

toString()

toIPv6Address()
Return type:

QIPv6Address

警告

本节包含从C++自动翻译到Python的代码片段,可能包含错误。

返回IPv6地址作为Q_IPV6ADDR结构。该结构由16个无符号字符组成。

Q_IPV6ADDR addr = hostAddr.toIPv6Address()
# addr contains 16 unsigned characters
for i in range(0, 16):
    # process addr[i]

如果protocol()IPv6Protocol,则此值有效。如果协议是IPv4Protocol,则地址将作为IPv4映射的IPv6地址返回。(RFC4291)

另请参阅

toString()

toString()
Return type:

字符串

返回地址作为字符串。

例如,如果地址是IPv4地址127.0.0.1,返回的字符串是“127.0.0.1”。对于IPv6,字符串格式将遵循RFC5952建议。对于Any,将返回其IPv4地址(“0.0.0.0”)

另请参阅

toIPv4Address()