QHostInfo

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()。
Constantvalue描述
QHostInfo::NoError0查找成功。
QHostInfo::HostNotFound1找不到主机的IP地址。
QHostInfo::UnknownError2出现未知错误。
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()启动多个请求,并不能保证发出信号的顺序。

  • 25
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值