PySide6.QtNetwork.QHostInfo

class QHostInfo

QHostInfo 类提供了用于主机名查找的静态函数。更多

概要

方法

静态函数

注意

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

详细描述

警告

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

QHostInfo 查找与主机名关联的IP地址,或与IP地址关联的主机名。该类提供了两个静态便捷函数:一个是异步工作并在找到主机后发出信号,另一个是阻塞并返回一个QHostInfo对象。

要异步查找主机的IP地址,请调用lookupHost(),它接受主机名或IP地址、接收器对象和槽签名作为参数,并返回一个ID。您可以通过使用查找ID调用abortHostLookup()来中止查找。

示例:

# 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 查询,而不是一个专用的 DNS 线程。这提高了性能,但与之前版本的 Qt 相比,使用 lookupHost() 时信号发射的顺序也有所改变。

注意

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

另请参阅

QAbstractSocket RFC 3492RFC 6724

class HostInfoError

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

常量

描述

QHostInfo.NoError

查找成功。

QHostInfo.HostNotFound

未找到主机的IP地址。

QHostInfo.UnknownError

发生了一个未知错误。

另请参阅

error() setError()

__init__(d)
Parameters:

dQHostInfo

构造other的副本。

__init__([lookupId=-1])
Parameters:

lookupId – int

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

另请参阅

lookupId()

static abortHostLookup(lookupId)
Parameters:

lookupId – int

中止具有ID id的主机查找,该ID由lookupHost()返回。

另请参阅

lookupHost() lookupId()

addresses()
Return type:

.list of QHostAddress

警告

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

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

示例:

info = QHostInfo()
...
if not info.addresses().isEmpty():
    address = info.addresses().first()
    # use the first IP address
error()
Return type:

HostInfoError

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

另请参阅

setError() errorString()

errorString()
Return type:

字符串

如果查找失败,此函数返回一个人类可读的错误描述;否则返回“未知错误”。

另请参阅

setErrorString() error()

static fromName(name)
Parameters:

name – str

Return type:

QHostInfo

查找给定主机name的IP地址。该函数在查找期间会阻塞,这意味着程序的执行会暂停,直到查找结果准备好。返回的查找结果在一个QHostInfo对象中。

如果你传递一个字面量的IP地址给name而不是主机名,QHostInfo将会搜索该IP的域名(即,QHostInfo将执行一个反向查找)。如果成功,返回的QHostInfo将包含解析的域名和主机名的IP地址。

另请参阅

lookupHost()

hostName()
Return type:

字符串

返回其IP地址被查找的主机的名称。

static localDomainName()
Return type:

字符串

返回此机器的DNS域。

注意

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

另请参阅

hostName()

static localHostName()
Return type:

字符串

返回此机器的主机名(如果已配置)。请注意,主机名不能保证全局唯一,特别是如果它们是自动配置的。

此函数不保证返回的主机名是完全限定域名(FQDN)。为此,请使用fromName()将返回的名称解析为FQDN。

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

lookupHost(name, callable)
Parameters:
  • name – str

  • callablePyCallable

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

  • receiverQObject

  • member – str

Return type:

整数

警告

本节包含从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()
Return type:

整数

返回此查找的ID。

setAddresses(addresses)
Parameters:

addresses – QHostAddress 的列表

将此QHostInfo中的地址列表设置为addresses

另请参阅

addresses()

setError(error)
Parameters:

错误HostInfoError

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

另请参阅

error() errorString()

setErrorString(errorString)
Parameters:

errorString – str

如果查找失败,将发生的错误的人类可读描述设置为str

另请参阅

errorString() setError()

setHostName(name)
Parameters:

name – str

将此QHostInfo的主机名设置为hostName

另请参阅

hostName()

setLookupId(id)
Parameters:

id – int

将此查找的ID设置为id

另请参阅

lookupId() lookupHost()

swap(other)
Parameters:

其他QHostInfo

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