class QHostInfo#

QHostInfo 类提供了静态函数以进行主机名查找。 更多

摘要#

方法#

静态函数#

注意

本文档可能包含自动从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的早期版本相比,信号发射的顺序也发生了变化。

注意

自 Qt 4.6.3 以来,为了提高性能,QHostInfo 使用了一个小的内部 DNS 缓存,有效期为 60 秒。

另请参阅

QAbstractSocket RFC 3492RFC 6724

class HostInfoError#

此枚举描述了在尝试解析域名时可能发生的各种错误。

常量

描述

QHostInfo.NoError

查询成功。

QHostInfo.HostNotFound

未找到主机的 IP 地址。

QHostInfo.UnknownError

发生了未知错误。

另请参阅

error() setError()

__init__([lookupId=-1])#
参数::

lookupId - int

构建一个空的带有查找 ID id 的主机信息对象。

另请参阅

lookupId()

__init__(d)
参数::

d - QHostInfo

构建一个 other 的副本。

static abortHostLookup(lookupId)#
参数::

lookupId - int

通过 ID id 中断主机查找,该 ID 由 lookupHost() 返回。

另请参阅

lookupHost() lookupId()

addresses()#
返回类型::

QHostAddress 列表

警告

本节包含自动从C++转换到Python的代码片段,可能会存在错误。

返回与 hostName() 关联的 IP 地址列表。此列表可能为空。

示例

info = QHostInfo()
...
if not info.addresses().isEmpty():
    address = info.addresses().first()
    # use the first IP address
error()#
返回类型::

HostInfoError

如果主机名查找失败,返回发生错误的类型;否则返回 NoError

另请参阅

setError() errorString()

errorString()#
返回类型::

str

如果查找失败,该函数返回对错误的易懂描述;否则返回“未知错误”。

另请参阅

setErrorString() error()

static fromName(name)#
参数::

name – str

返回类型::

QHostInfo

查找给定主机 name 的 IP 地址(或地址)。此函数在查找过程中会阻塞,这意味着程序执行会暂停,直到查找结果准备好。返回查找结果,以 QHostInfo 对象的形式。

如果您传递的是IP地址而不是主机名,则 QHostInfo 会寻找该IP所属的域名(即,QHostInfo 将执行反向查找)。查找成功后,返回的 QHostInfo 将包含解析后的域名和宿主名的IP地址。

另请参阅

lookupHost()

hostName()#
返回类型::

str

返回查找了IP地址的主机名。

static localDomainName()#
返回类型::

str

返回此机器的DNS域名。

注意

DNS域名与Windows网络中找到的域名无关。

另请参阅

hostName()

static localHostName()#
返回类型::

str

如果已配置,则返回此机器的计算机名。请注意,主机名不一定在全球范围内具有唯一性,尤其是如果它们是自动配置的。

此函数不能保证返回的主机名是完整合格的域名(FQDN)。要实现这一点,请使用 fromName() 将返回的名称解析为FQDN。

此函数返回的与 QSysInfo::machineHostName() 相同。

lookupHost(arg__1, arg__2)#
参数::
  • arg__1 – 字符串

  • arg__2PyCallable

static lookupHost(name, receiver, member)
参数::
  • name – str

  • receiverQObject

  • 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

另请参阅

addresses()

setError(error)#
参数::

errorHostInfoError

将此QHostInfo的错误类型设置为error

另请参阅

error() errorString()

setErrorString(errorString)#
参数::

errorString – str

如果查找失败,将错误的事件可读描述设置为 str

另请参阅

errorString() setError()

setHostName(name)#
参数::

name – str

将此 QHostInfo 的主机名设置为 hostName

另请参阅

hostName()

setLookupId(id)#
参数::

id – int

将此查找的 ID 设置为 id

另请参阅

lookupId() lookupHost()

swap(other)#
参数::

otherQHostInfo

交换主机信息 other 与此主机信息。此操作非常快并且永远不会失败。