環境: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通常是用來儲存所有介面...