Qt扫盲- QHostInfo理论总结

QHostInfo理论总结

  • 一、概述
  • 二、使用
    • 1. 异步查询
    • 2. 同步查询

一、概述

QHostInfo查找与主机名关联的IP地址,或与IP地址关联的主机名。 ,其实就是获取一个主机的信息。主机名其实就是一些类似 Windows系统电脑里面的 LAPTOP-RMRFMNV5 主机命名之类的,一般不会直接使用,一般是在tcp/udp通信的时候使用这样的一些功能。

这个类提供了两个静态函数:一个异步工作,在找到主机后发出信号;另一个阻塞并返回一个QHostInfo对象。

二、使用

1. 异步查询

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

例子:

 // To find the IP address of qt-project.org
  QHostInfo::lookupHost("qt-project.org",
                        this, SLOT(printResults(QHostInfo)));

  // To find the host name for 4.2.2.1
  QHostInfo::lookupHost("4.2.2.1",
                        this, SLOT(printResults(QHostInfo)));

当结果准备好时,调用该槽。结果存储在一个QHostInfo对象中。调用addresses()得到指定主机的IP地址列表,调用hostName()得到所查找的主机名。
如果查找失败,error()返回发生的错误类型。errorString()给出了人类可读的查找错误的描述

2. 同步查询

如果你想要阻塞式查找,可以使用QHostInfo::fromName()函数:

QHostInfo info = QHostInfo::fromName("qt-project.org");

QHostInfo支持IDNA (Internationalized Domain Names)和Punycode (Punycode)标准。

要取得本地主机的名称,可以使用静态函数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缓存来提高性能。

你可能感兴趣的:(#,▶,Qt扫盲,QHostInfo,Qt网络主机信息,Qt网络主机,qt)