天天看点

Qt之QHostInfo简述查询本机主机名查询主机信息中止查询错误处理更多参考

qhostinfo 类为主机名查找提供了静态函数。

qhostinfo 利用操作系统提供的查询机制来查询与特定主机名相关联的主机的 ip 地址,或者与一个ip地址相关联的主机名。这个类提供了两个静态的便利函数:一个以异步方式工作,一旦找到主机就发射一个信号;另一个以阻塞方式工作,并且最终返回一个 qhostinfo 对象。

要使用异步方式查询主机的 ip 地址,调用 lookuphost() 即可,该函数包含 3 个参数,依次是:主机名/ ip 地址、接收的对象、接收的槽函数,并返回一个查询id。以查询id为参数,通过调用 aborthostlookup() 函数的来中止查询。

当获得查询结果后就会调用槽函数,查询结果被存储到 qhostinfo 对象中。可通过调用 addresses() 函数来获得主机的 ip 地址列表,同时可通过调用 hostname() 函数来获得查询的主机名。

<a href="#%e7%ae%80%e8%bf%b0">简述</a>

<a href="#%e6%9f%a5%e8%af%a2%e6%9c%ac%e6%9c%ba%e4%b8%bb%e6%9c%ba%e5%90%8d">查询本机主机名</a>

<a href="#%e6%9f%a5%e8%af%a2%e4%b8%bb%e6%9c%ba%e4%bf%a1%e6%81%af">查询主机信息</a>

<a href="#%e5%bc%82%e6%ad%a5%e6%96%b9%e5%bc%8f">异步方式</a>

<a href="#%e9%98%bb%e5%a1%9e%e6%96%b9%e5%bc%8f">阻塞方式</a>

<a href="#%e4%b8%ad%e6%ad%a2%e6%9f%a5%e8%af%a2">中止查询</a>

<a href="#%e9%94%99%e8%af%af%e5%a4%84%e7%90%86">错误处理</a>

<a href="#%e6%9b%b4%e5%a4%9a%e5%8f%82%e8%80%83">更多参考</a>

输出结果:

local host name:”wang-pc”

使用 lookuphost() ,实际的查询在一个单独的线程中完成,利用操作系统的方法来执行名称查找。

根据主机名查询主机信息

found ipv4 address: “5.254.113.102” found ipv4 address: “178.32.152.214”

根据 ip 查询主机信息

found hostname: “webredirects.cloudns.net”

如果要使用阻塞查找使用 qhostinfo::fromname() 函数:

这种情况下,名称查询的执行与调用者处于相同的线程中。这对于非 gui 应用程序或在一个单独的、非 gui 线程中做名称查找是比较有用的(在 gui 线程中调用这个函数可能会导致用户界面冻结)。

lookuphost() 查询主机信息时,会返回一个查询 id,以此 id 为参数,通过调用 aborthostlookup() 来中止查询:

如果查询失败,error() 返回发生错误的类型,errorstring() 返回一个能够读懂的查询错误描述。

枚举 qhostinfo::hostinfoerror:

常量

描述

qhostinfo::noerror

查找成功

qhostinfo::hostnotfound

1

没有发现主机对应的ip地址

qhostinfo::unknownerror

2

未知错误

<a href="http://blog.csdn.net/liang19890820/article/details/52249509">qt之网络编程</a>

<a href="http://blog.csdn.net/liang19890820/article/details/52273986">qt之qhostaddress</a>

<a href="http://blog.csdn.net/liang19890820/article/details/52276646">qt之qnetworkaddressentry</a>

<a href="http://blog.csdn.net/liang19890820/article/details/50775052">qt之qnetworkinterface</a>