天天看點

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>