獲得本地IP地址是否有一個跨平臺的方式來獲得本地IP地址使用Qt的計算機(即東西,看起來像192.168.1.49
)?Qt中
我想爲Symbian手機的FTP服務器,我想顯示FTP客戶端應該連接到IP地址。
獲得本地IP地址是否有一個跨平臺的方式來獲得本地IP地址使用Qt的計算機(即東西,看起來像192.168.1.49
)?Qt中
我想爲Symbian手機的FTP服務器,我想顯示FTP客戶端應該連接到IP地址。
使用QNetworkInterface::allAddresses()
foreach (const QHostAddress &address, QNetworkInterface::allAddresses()) {
if (address.protocol() == QAbstractSocket::IPv4Protocol && address != QHostAddress(QHostAddress::LocalHost))
qDebug() << address.toString();
}
QNetworkInterface::allAddresses()
會給你的網絡地址。然後,您可以對結果進行篩選,以IPv4地址沒有回送地址:
QList<QHostAddress> list = QNetworkInterface::allAddresses();
for(int nIter=0; nIter<list.count(); nIter++)
{
if(!list[nIter].isLoopback())
if (list[nIter].protocol() == QAbstractSocket::IPv4Protocol)
qDebug() << list[nIter].toString();
}
如果你需要的不僅僅是IP地址的詳細信息(如子網),你必須在遍歷所有的接口。
QList<QNetworkInterface> allInterfaces = QNetworkInterface::allInterfaces();
QNetworkInterface eth;
foreach(eth, allInterfaces) {
QList<QNetworkAddressEntry> allEntries = eth.addressEntries();
QNetworkAddressEntry entry;
foreach (entry, allEntries) {
qDebug() << entry.ip().toString() << "/" << entry.netmask().toString();
}
}
我想獲得eth1
我的目標機器的IP地址。上面提供的答案幫助我得到我想要的東西:這就是我寫我的函數來獲取網絡接口名稱eth1
的IP地址的方法。
QNetworkInterface eth1Ip = QNetworkInterface::interfaceFromName("eth1");
QList<QNetworkAddressEntry> entries = eth1Ip.addressEntries();
if (!entries.isEmpty()) {
QNetworkAddressEntry entry = entries.first();
qDebug() << entry.ip();
}
QNetworkInterface返回很多地址。你必須進行篩選,以獲得理想的結果:
foreach (const QNetworkInterface &netInterface, QNetworkInterface::allInterfaces()) {
QNetworkInterface::InterfaceFlags flags = netInterface.flags();
if((bool)(flags & QNetworkInterface::IsRunning) && !(bool)(flags & QNetworkInterface::IsLoopBack)){
foreach (const QNetworkAddressEntry &address, netInterface.addressEntries()) {
if(address.ip().protocol() == QAbstractSocket::IPv4Protocol)
qDebug() << address.ip().toString();
}
}
}
+1:不幸的是,它也返回虛擬機,虛擬盒等的地址我已經當最後一個號碼ISN檢查使用的快速和骯髒的修復」 t 1(通常是逃走的IP)&& address.toString()。section(「。」, - 1,-1)!=「1」。我仍然在尋找可能性,如果發現本地IP也有標準度假。 –