- class QHostInfo#
QHostInfo
类提供了静态函数以进行主机名查找。 更多…摘要#
方法#
def
__init__()
def
addresses()
def
error()
def
errorString()
def
hostName()
def
lookupHost()
def
lookupId()
def
setAddresses()
def
setError()
def
setErrorString()
def
setHostName()
def
setLookupId()
def
swap()
静态函数#
def
fromName()
def
localHostName()
def
lookupHost()
注意
本文档可能包含自动从C++转换到Python的代码片段。我们始终欢迎对代码片段的翻译做出贡献。如果您发现翻译有误,也可以通过在https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。
详细描述#
警告
本节包含自动从C++转换到Python的代码片段,可能会存在错误。
QHostInfo
通过主机名找到相关联的IP地址,或通过IP地址找到相关联的主机名。该类提供了两个静态便利函数:一个异步工作并发出信号,一旦找到主机就会触发,另一个是阻塞的,并返回一个QHostInfo
对象。要异步查找主机的IP地址,请调用
lookupHost()
,该函数接受主机名或IP地址,一个接收器对象和一个槽签名作为参数,并返回一个ID。您可以通过调用abortHostLookup()
(与方法参数带有查询ID)来中止查找。示例
# To find the IP address of qt-project.org QHostInfo::lookupHost("qt-project.org", self.printResults) # To find the host name for 4.2.2.1 QHostInfo::lookupHost("4.2.2.1", self.printResults)
当结果准备就绪时,会调用槽。结果存储在一个
QHostInfo
对象中。调用addresses()
以获取主机的IP地址列表,并调用hostName()
来获取查找的主机名。如果查找失败,
error()
返回发生错误类型。errorString()
提供对查找错误的便于阅读的描述。如果要进行阻塞查找,使用
fromName()
函数info = QHostInfo.fromName("qt-project.org")
QHostInfo
通过IDNA和Punycode标准支持国际化域名(IDNs)。要获取本地主机的名称,使用静态方法
localHostName()
。QHostInfo
使用操作系统提供的机制执行查找。根据RFC 6724,不能保证域名或主机注册的所有IP地址都会返回。注意
自Qt 4.6.1以来,
QHostInfo
使用多线程进行DNS查找而不是一个专门的网络线程。这提高了性能,但使用lookupHost()
时与Qt的早期版本相比,信号发射的顺序也发生了变化。- class HostInfoError#
此枚举描述了在尝试解析域名时可能发生的各种错误。
常量
描述
QHostInfo.NoError
查询成功。
QHostInfo.HostNotFound
未找到主机的 IP 地址。
QHostInfo.UnknownError
发生了未知错误。
另请参阅
- __init__([lookupId=-1])#
- 参数::
lookupId - int
构建一个空的带有查找 ID
id
的主机信息对象。另请参阅
- __init__(d)
- 参数::
d -
QHostInfo
构建一个
other
的副本。- static abortHostLookup(lookupId)#
- 参数::
lookupId - int
通过 ID
id
中断主机查找,该 ID 由lookupHost()
返回。另请参阅
- addresses()#
- 返回类型::
QHostAddress 列表
警告
本节包含自动从C++转换到Python的代码片段,可能会存在错误。
返回与
hostName()
关联的 IP 地址列表。此列表可能为空。示例
info = QHostInfo() ... if not info.addresses().isEmpty(): address = info.addresses().first() # use the first IP address
- error()#
- 返回类型::
如果主机名查找失败,返回发生错误的类型;否则返回
NoError
。另请参阅
- errorString()#
- 返回类型::
str
如果查找失败,该函数返回对错误的易懂描述;否则返回“未知错误”。
另请参阅
查找给定主机
name
的 IP 地址(或地址)。此函数在查找过程中会阻塞,这意味着程序执行会暂停,直到查找结果准备好。返回查找结果,以QHostInfo
对象的形式。如果您传递的是IP地址而不是主机名,则
QHostInfo
会寻找该IP所属的域名(即,QHostInfo
将执行反向查找)。查找成功后,返回的QHostInfo
将包含解析后的域名和宿主名的IP地址。另请参阅
- hostName()#
- 返回类型::
str
返回查找了IP地址的主机名。
- static localDomainName()#
- 返回类型::
str
返回此机器的DNS域名。
- static localHostName()#
- 返回类型::
str
如果已配置,则返回此机器的计算机名。请注意,主机名不一定在全球范围内具有唯一性,尤其是如果它们是自动配置的。
此函数不能保证返回的主机名是完整合格的域名(FQDN)。要实现这一点,请使用
fromName()
将返回的名称解析为FQDN。此函数返回的与 QSysInfo::machineHostName() 相同。
- lookupHost(arg__1, arg__2)#
- 参数::
arg__1 – 字符串
arg__2 –
PyCallable
- static lookupHost(name, receiver, member)
- 参数::
name – str
receiver –
QObject
member – 字符串
- 返回类型::
int
警告
本节包含自动从C++转换到Python的代码片段,可能会存在错误。
查找与主机名
name
相关的IP地址(们),并返回查找的ID。当查找的结果准备好了,将调用receiver
中的槽或信号member
,并传递一个QHostInfo
参数。然后可以检查QHostInfo
对象以获取查找结果。查找由单个函数调用执行,例如
QHostInfo::lookupHost("www.kde.org", self.lookedUp)
槽的实现将打印出查找返回的地址的基本信息,或者在失败时报告错误
def lookedUp(self, host): if host.error() != QHostInfo.NoError: print("Lookup failed:", host.errorString()) return addresses = host.addresses() for address in addresses: print("Found address:", address.toString())
如果您将一个字面IP地址传递给
name
而不是主机名,QHostInfo
将搜索与IP对应的域名(即,QHostInfo
将执行一个反向查找)。成功后,得到的QHostInfo
将包含解析后的域名和主机名的IP地址。例如:QHostInfo::lookupHost("4.2.2.1", self.lookedUp)
注意
如果你使用lookupHost()启动多个请求,保证发出的信号顺序是没有保障的。
注意
在Qt 6.7之前的版本中,此函数将
receiver
作为(非const)QObject*
处理。- lookupId()#
- 返回类型::
int
返回此查找的ID。
- setAddresses(addresses)#
- 参数::
addresses – .list of QHostAddress
将此
QHostInfo
中的地址列表设置为addresses
。另请参阅
- setError(error)#
- 参数::
error –
HostInfoError
将此
QHostInfo
的错误类型设置为error
。另请参阅
- setErrorString(errorString)#
- 参数::
errorString – str
如果查找失败,将错误的事件可读描述设置为
str
。另请参阅
- setHostName(name)#
- 参数::
name – str
将此
QHostInfo
的主机名设置为hostName
。另请参阅
- setLookupId(id)#
- 参数::
id – int
将此查找的 ID 设置为
id
。另请参阅
交换主机信息
other
与此主机信息。此操作非常快并且永远不会失败。