qt獲得本地IP的方法

2021-05-27 09:29:21 字數 1304 閱讀 4794

環境:ubuntu10.04 + qt4.7.0

linux獲得本地ip的方法,我嘗試了兩種

1.用qhostinfo類解析

qhostinfo類可以解析網域名稱,理論上也可以解析本地ip,可是經過嘗試,我發現解析出來的ip是127.0.0.1是本地回環位址,不符合我的需求。

**:

//獲取本地ip

qhostinfo info=qhostinfo::fromname(qhostinfo::localhostname());

//qhostinfo info=qhostinfo::fromname("www.google.com");

//sys_res.local_ip = info.addresses().first().tostring();

//qdebug() << sys_res.local_ip;

if (info.error() != qhostinfo::noerror)

for (int i = 0;i < info.addresses().size();i++)

2.用qnetworkinte***ce解析

用這個類可以獲取系統底層的網路引數,經過實踐是可行的,我參考的文章:

2.通過qnetworkinte***ce類來獲取本機的ip位址和網路介面資訊。

qnetworkinte***ce類提供了程式所執行時的主機的ip位址和網路介面資訊的列表。在每乙個網路介面資訊中都包含了0個或多個ip位址,而每乙個ip位址又包含了和它相關的子網掩碼和廣播位址,它們三者被封裝在乙個qnetworkaddressentry物件中。網路介面資訊中也提供了硬體位址資訊。我們將widge.cpp建構函式中以前新增的**刪除,然後新增以下**。

qlistlist = qnetworkinte***ce::allinte***ces();

//獲取所有網路介面的列表

foreach(qnetworkinte***ce inte***ce,list)

return 0;

}

把這段**嵌入到我的程式中:

qlistlist = qnetworkinte***ce::alladdresses();

foreach (qhostaddress address, list)

sys_res.local_ip = address.tostring();}}

if (sys_res.local_ip == "127.0.0.1")

else

獲得本地IP

一些定義 hostent declare struct hostent struct in addr s un b struct s un w u long s addr s un define s addr s un.s addr can be used for most tcp ip code ...

Qt下如何獲得本地網絡卡IP

include include include include getipv4 getipv4 qtextcodec setcodecforcstrings qtextcodec codecforname utf 8 qlistvaddresslist qnetworkinte ce alladdr...

用ioctl獲得本地ip位址

用ioctl獲得本地ip位址時要用到兩個結構體ifconf和ifreq,它們對於大多數人 來說都是比較陌生的,這裡給大家一種比較簡單的理解方法,當然只一種幫助 理解的方法,在描述中可能會有一些地方與真實定義有所出入,僅供參考.首先先認識一下ifconf和ifreq ifconf通常是用來儲存所有介面...