QHostInfo
QHostInfo
类为主机名查找提供静态功能。此类中的所有函数都是reentent。
Header: | #include |
---|---|
qmake: | QT += network |
QHostInfo
查找与主机名相关联的IP地址,或者与IP地址关联的主机名。该类提供了两个静态便利函数:
- 一个异步工作并在找到主机后发出信号的函数,
- 另一个则阻塞并返回
QHostInfo对象的函数
要异步查找主机的IP地址,请调用lookupHost()
,它将主机名或IP地址,接收方对象和插槽签名作为参数并返回ID。您可以通过使用查找ID调用abortHostLookup()
来中止查找。例子:
QHostInfo::lookupHost("qt-project.org",
this, SLOT(printResults(QHostInfo)));
QHostInfo::lookupHost("4.2.2.1",
this, SLOT(printResults(QHostInfo)));
结果准备好后,将调用该插槽。结果存储在QHostInfo对象中。调用addresses()
以获得主机的IP地址列表,并调用hostName()
以获得所查找的主机名。
如果查找失败,则error()
返回发生的错误的类型,errorString()
提供了人类可读的查找错误描述。
如果要阻止查找,请使用QHostInfo :: fromName()
函数:
QHostInfo info = QHostInfo :: fromName( “ qt-project.org”);
QHostInfo通过IDNA和Punycode标准支持国际化域名(IDN)。
要检索本地主机的名称,请使用静态QHostInfo :: localHostName()
函数
QHostInfo使用操作系统提供的机制来执行查找。根据{https://tools.ietf.org/html/rfc6724}{RFC 6724},不能保证将返回为域或主机注册的所有IP地址。
注意:从Qt 4.6.1开始,QHostInfo使用多个线程进行DNS查找,而不是使用一个专用DNS线程。与早期版本的Qt相比,这不仅提高了性能,而且还改变了使用lookupHost()时的信号发射顺序。
注意:由于Qt 4.6.3,QHostInfo使用内部60秒小的DNS缓存来提高性能。
QHostInfo :: HostInfoError
原型:
enum QHostInfo::HostInfoError
作用:
- 该枚举描述了尝试解析主机名时可能发生的各种错误。
- 另请参见
error()
和setError()。
Constant | value | 描述 |
---|---|---|
QHostInfo::NoError | 0 | 查找成功。 |
QHostInfo::HostNotFound | 1 | 找不到主机的IP地址。 |
QHostInfo::UnknownError | 2 | 出现未知错误。 |
QHostInfo
原型:
// Move从other构造一个新的QHostInfo QHostInfo::QHostInfo(QHostInfo &&other) // 构造other的副本 QHostInfo::QHostInfo(const QHostInfo &other) // 构造一个空的主机信息对象,其查找ID为id。另请参见lookupId()。 QHostInfo :: QHostInfo(int id = -1)
作用:
- 构造主机信息对象。
abortHostLookup
原型:
[static] void QHostInfo::abortHostLookup(int id)
作用:
- 中止使用ID的主机查找,该ID由
lookupHost()
返回。- 另请参见
lookupHost()
和lookupId()。
addressses
QList<QHostAddress> QHostInfo::addresses() const
- 作用:
- 返回与hostName()关联的IP地址列表。此列表可能为空。
- 另请参见
setAddresses()
,hostName()
,error().
error
原型:
QHostInfo :: HostInfoError QHostInfo :: error()const
作用:
- 返回在主机名查找失败时发生的错误的类型;否则返回
NoError。
- 另请参见
setError()
和errorString()
errorString
原型:
QString QHostInfo::errorString() const
作用:
- 如果查找失败,则此函数返回错误的可读描述;否则,错误返回。否则返回“未知错误”。
- 另请参见
setError()
和error()
fromName
原型:
[static]QHostInfo QHostInfo::fromName(const QString &name)
作用:
- 查找给定主机名的IP地址。函数在查找过程中阻塞,这意味着程序的执行被暂停,直到查找的结果准备好为止。返回
QHostInfo
对象中的查找结果。
如果您将一个字面IP地址传递给name而不是主机名,QHostInfo将搜索IP的域名(也就是,QHostInfo将执行反向查找)。如果成功,返回的QHostInfo将包含解析的域名和主机名的IP地址。- 另请参见
lookupHost()
。
hostName
原型:
QString QHostInfo :: hostName()const
作用:
- 返回查找其IP地址的主机的名称。
- 另请参见
setHostName(
)和localHostName()。
localDomainName
原型:
[static]QString QHostInfo :: localDomainName()
作用:
- 返回此计算机的DNS域。
- 注意: DNS域与Windows网络中发现的域名无关。
另请参见hostName()
localHostName
原型:
[static]QString QHostInfo :: localHostName()
作用:
- 如果已配置,则返回本机的主机名。请注意,不能保证主机名是全局唯一的,特别是如果它们是自动配置的。
- 此函数不能保证返回的主机名是完全合格的域名(FQDN)。为此,请使用fromName()将返回的名称解析为FQDN。
- 此函数返回与
QSysInfo :: machineHostName()
相同的函数。- 另请参见
hostName()
和localDomainName()。
lookupHost
原型:
[static]int QHostInfo::lookupHost(const QString &name, QObject *receiver, const char *member)
作用:
- 查找与主机名name相关联的IP地址,并返回一个用于查找的ID。当查找的结果准备好时,将使用QHostInfo参数调用receiver中的slot或信号成员。然后可以检查QHostInfo对象以获得查找的结果。
查找由单个函数调用执行,例如:
QHostInfo::lookupHost("www.kde.org",
this, SLOT(lookedUp(QHostInfo)));
插槽的实现打印查找返回的地址的基本信息,或者在查找失败时报告一个错误:
void MyWidget::lookedUp(const QHostInfo &host)
{
if (host.error() != QHostInfo::NoError) {
qDebug() << "Lookup failed:" << host.errorString();
return;
}
const auto addresses = host.addresses();
for (const QHostAddress &address : addresses)
qDebug() << "Found address:" << address.toString();
}
如果您将一个字面IP地址传递给name而不是主机名,QHostInfo将搜索IP的域名(也就是,QHostInfo将执行反向查找)。如果成功,结果QHostInfo将包含解析的域名和主机名的IP地址。例子:
QHostInfo::lookupHost("4.2.2.1",
this, SLOT(lookedUp(QHostInfo)));
注意:如果使用lookupHost()启动多个请求,并不能保证发出信号的顺序。