PySide6.QtNetwork.QHostAddress¶
- class QHostAddress¶
QHostAddress
类提供了一个IP地址。更多…概要¶
方法¶
def
__init__()
def
clear()
def
isBroadcast()
def
isEqual()
def
isGlobal()
def
isInSubnet()
def
isLinkLocal()
def
isLoopback()
def
isMulticast()
def
isNull()
def
isPrivateUse()
def
isSiteLocal()
def
__ne__()
def
__eq__()
def
protocol()
def
scopeId()
def
setAddress()
def
setScopeId()
def
swap()
def
toIPv4Address()
def
toIPv6Address()
def
toString()
静态函数¶
def
parseSubnet()
注意
本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。
详细描述¶
此类以平台和协议无关的方式保存IPv4或IPv6地址。
QHostAddress
通常与QTcpSocket
、QTcpServer
和QUdpSocket
一起使用,用于连接到主机或设置服务器。主机地址通过
setAddress()
设置,并通过toIPv4Address()
、toIPv6Address()
或toString()
获取。您可以使用protocol()
检查类型。注意
请注意,
QHostAddress
不执行DNS查找。为此需要QHostInfo
。该类还支持常见的预定义地址:
Null
、LocalHost
、LocalHostIPv6
、Broadcast
和Any
。- 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
QHostAddress.TolerantConversion
设置所有前面的三个标志。
另请参阅
- PySide6.QtNetwork.QHostAddress.IPv4Protocol¶
- PySide6.QtNetwork.QHostAddress.IPv6Protocol¶
- PySide6.QtNetwork.QHostAddress.AnyIPProtocol¶
- PySide6.QtNetwork.QHostAddress.UnknownNetworkLayerProtocol¶
- __init__()¶
构造一个空的主机地址对象,即一个对任何主机或接口都无效的地址。
另请参阅
- __init__(address)
- Parameters:
地址 –
SpecialAddress
为
address
构造一个QHostAddress
对象。- __init__(copy)
- Parameters:
复制 –
QHostAddress
构造给定
address
的副本。- __init__(ip6Addr)
- Parameters:
ip6Addr –
QIPv6Address
- __init__(address)
- Parameters:
地址 – str
根据字符串
address
(例如,“127.0.0.1”)构造一个IPv4或IPv6地址。另请参阅
- __init__(ip4Addr)
- Parameters:
ip4Addr – int
使用IPv4地址
ip4Addr
构造一个主机地址对象。- clear()¶
将主机地址设置为空,并将协议设置为
UnknownNetworkLayerProtocol
。另请参阅
- isBroadcast()¶
- Return type:
布尔
如果地址是IPv4广播地址,则返回
true
,否则返回false
。IPv4广播地址是255.255.255.255。请注意,此函数不会对IPv4网络的本地广播地址返回true。为此,请使用
QNetworkInterface
来获取本地机器的广播地址。- isEqual(address[, mode=QHostAddress.ConversionModeFlag.TolerantConversion])¶
- Parameters:
地址 –
QHostAddress
mode –
ConversionModeFlag
的组合
- 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
描述的子网中,则返回true
。subnet
的QHostAddress
成员包含网络前缀,而int(第二个)成员包含网络掩码(前缀长度)。- isInSubnet(subnet, netmask)
- Parameters:
子网 –
QHostAddress
netmask – 整数
- Return type:
布尔
如果此IP位于由网络前缀
subnet
和网络掩码netmask
描述的子网中,则返回true
。如果一个IP地址位于某个子网的最低地址和最高地址之间,则认为该IP地址属于该子网。在IP版本4的情况下,最低地址是网络地址,而最高地址是广播地址。
subnet
参数不必是实际的网络地址(子网中的最低地址)。它可以是属于该子网的任何有效IP。特别是,如果它等于此对象持有的IP地址,此函数将始终返回true(前提是网络掩码是有效值)。另请参阅
- 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
。默认构造函数创建一个空地址。
另请参阅
- 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
)。另请参阅
- 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)。
另请参阅
- protocol()¶
- Return type:
返回主机地址的网络层协议。
- 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:
ip6Addr –
QIPv6Address
- 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。另请参阅
- toIPv6Address()¶
- Return type:
警告
本节包含从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()¶
- Return type:
字符串
返回地址作为字符串。
例如,如果地址是IPv4地址127.0.0.1,返回的字符串是“127.0.0.1”。对于IPv6,字符串格式将遵循RFC5952建议。对于
Any
,将返回其IPv4地址(“0.0.0.0”)另请参阅