qt獲得本地IP的方法
本文部落格連結:http://blog.csdn.net/jdh99,作者:jdh,轉載請註明.
環境: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)
- {
- qDebug() << "Lookup failed:" << info.errorString();
- return;
- }
- for (int i = 0;i < info.addresses().size();i++)
- {
- qDebug() << "Found address:" << info.addresses()[i].toString() << endl;
- }
2.用QNetworkInterface解析
用這個類可以獲取系統底層的網路引數,經過實踐是可行的,我參考的文章:http://qt.csdn.net/articles.aspx?pointid=489&pointid2=7
參考程式碼擷取:
- 2.通過QNetworkInterface類來獲取本機的IP地址和網路介面資訊。
- QNetworkInterface類提供了程式所執行時的主機的IP地址和網路介面資訊的列表。在每一個網路介面資訊中都包含了0個或多個IP地址,而每一個IP地址又包含了和它相關的子網掩碼和廣播地址,它們三者被封裝在一個QNetworkAddressEntry物件中。網路介面資訊中也提供了硬體地址資訊。我們將widge.cpp建構函式中以前新增的程式碼刪除,然後新增以下程式碼。
- QList<QNetworkInterface> list = QNetworkInterface::allInterfaces();
- //獲取所有網路介面的列表
- foreach(QNetworkInterface interface,list)
- { //遍歷每一個網路介面
- qDebug() << “Device: “<<interface.name();
- //裝置名
- qDebug() << “HardwareAddress: “<<interface.hardwareAddress();
- //硬體地址
- QList<QNetworkAddressEntry> entryList = interface.addressEntries();
- //獲取IP地址條目列表,每個條目中包含一個IP地址,一個子網掩碼和一個廣播地址
- foreach(QNetworkAddressEntry entry,entryList)
- {//遍歷每一個IP地址條目
- qDebug()<<”IP Address: “<<entry.ip().toString();
- //IP地址
- qDebug()<<”Netmask: “<<entry.netmask().toString();
- //子網掩碼
- qDebug()<<”Broadcast: “<<entry.broadcast().toString();
- //廣播地址
- }
- }
- 其實,如果我們只想利用QNetworkInterface類來獲取IP地址,那麼就沒必要像上面那樣複雜,這個類提供了一個便捷的函式allAddresses()來獲取IP地址,例如:
- QString address = QNetworkInterface::allAddresses().first().toString();
- 3.總結。
- 在這一節中我們學習瞭如何來查詢本機網路裝置的相關資訊。其實,以後最常用的還是其中獲取IP地址的方法。我們以後可以利用一個函式來獲取IP地址:
- QString Widget::getIP() //獲取ip地址
- {
- QList<QHostAddress> list = QNetworkInterface::allAddresses();
- foreach (QHostAddress address, list)
- {
- if(address.protocol() == QAbstractSocket::IPv4Protocol)
- //我們使用IPv4地址
- return address.toString();
- }
- return 0;
- }
把這段程式碼嵌入到我的程式中:
- QList<QHostAddress> list = QNetworkInterface::allAddresses();
- foreach (QHostAddress address, list)
- {
- if(address.protocol() == QAbstractSocket::IPv4Protocol)
- {
- //IPv4地址
- if (address.toString().contains("127.0."))
- {
- continue;
- }
- Sys_Res.local_ip = address.toString();
- }
- }
- if (Sys_Res.local_ip == "127.0.0.1")
- {
- qDebug() << "get local ip fail";
- return;
- }
- else
- {
- qDebug() << Sys_Res.local_ip;
- }
相關文章
- 使用代理IP輕鬆獲得韓國IP地址
- 一個獲得投資人青睞的方法
- PHP獲取IP地址的方法,防止偽造IP地址注入攻擊PHP
- js根據ip地址獲取省份城市的方法JS
- 獲取爬蟲動態IP的三種方法爬蟲
- 動態IP代理-如何讓文章獲得高閱讀量?
- Android的CameraX獲得相機支援解析度的方法Android
- 一文梳理獲取本地IP和遠端IP的各種方式,附Python程式碼例項Python
- 前端Js獲取本網IP和外網IP方法總彙前端JS
- 訪問本地的公網ip
- LocalizeDirect的Gridly獲得110萬美元投資--Gridly,為遊戲本地化而生的Zed遊戲
- 獲取本機電腦IP的正確使用方法
- python透過IP獲取國家和城市地市的方法Python
- Mastercard獲得管理加密貨幣“部分儲備”方法的專利AST加密
- 獲得優質域名很重要,這裡有正確的方法
- Dapr 與 .NET Aspire 結合使用獲得無與倫比的本地開發體驗
- 7個獲取訪問者真實IP的方法,速學!!!
- linux下的QT打包方法LinuxQT
- jQuery獲得指定text的值jQuery
- Qt 編譯qt-material-widgets皮膚的方法QT編譯
- Java中使用Optional檢測並獲得非空值的幾種方法Java
- Java虛擬機器中獲得Runtime例項的方法是什麼?Java虛擬機
- 明日之後傭兵的鑰匙怎麼獲得 明日之後傭兵的鑰匙獲取方法
- Oracle RAC修改Scan IP,Public IP的方法Oracle
- 乾貨:不同場景容器內獲取客戶端源IP的方法客戶端
- qt 獲取設定好的環境變數QT變數
- 《艾爾登法環》血玫瑰怎麼獲得?老頭環血玫瑰獲取方法
- qt 打包釋出 獲取dllQT
- QT獲取日期,時間,星期QT
- Qt:獲取日期和時間QT
- 曲線救國,解決spring-boot2.0.6中webflux無法獲得請求IP的問題SpringbootWebUX
- 【訪問本地專案,localhosthost可以,本地ip不可以】localhost
- 京東獲得店鋪的所有商品API介面(item_search_shop-獲得店鋪的所有商API
- 芯原影像訊號處理器IP獲得IEC 61508工業功能安全認證
- java獲取本機的ip地址Java
- saltstack獲取IP地址
- qt-實時顯示本地時間、以及QDateTime的使用QT
- Qt TcpSocket的掉線解決方法QTTCP
- MATLAB獲得子圖位置Matlab