> 文档中心 > QT 获取linux本机的IP地址

QT 获取linux本机的IP地址

一、QHostAddress 转 QString

QHostAddress haAdrdress = QHostAddress::LocalHost;//LocalHost相当于本地的“127.0.0.1”
QString sIp = haAdrdress.toString();

二、获取linux本机的IP地址

    QList sIpAddressesList = QNetworkInterface::allAddresses();    for(int i=0;i<sIpAddressesList.size();i++)    { QHostAddress &sAddr = sIpAddressesList[i]; // 找到不是本地ip,并且是ipv4协议,并且不是169开头的第一个地址 if(sAddr != QHostAddress::LocalHost && sAddr.protocol() == QAbstractSocket::IPv4Protocol && !sAddr.toString().startsWith("169")) {     sLocalSeverIp = sAddr.toString();     break; }    }    if (sLocalSeverIp.isEmpty())    { sLocalSeverIp = QHostAddress(QHostAddress::LocalHost).toString();    }    //sLocalSeverIp 即是本地的IP地址

双网卡的情况下,获取正在跑的IP 

    QList listNiTmp = QNetworkInterface::allInterfaces();    QStringList slAllActiveIp;    foreach  (QNetworkInterface niTmp, listNiTmp)    { if (niTmp.flags().testFlag(QNetworkInterface::IsRunning)) {     QList listAddressEntry = niTmp.addressEntries();     foreach (QNetworkAddressEntry addressentry, listAddressEntry)     {  if (addressentry.ip().protocol() == QAbstractSocket::IPv4Protocol   && addressentry.ip() != QHostAddress::LocalHost)  {      slAllActiveIp.append(addressentry.ip().toString());      qDebug() << "ip:" << addressentry.ip().toString();  }     } }    }    qDebug() << "slAllActiveIp:" << slAllActiveIp;

补充:

 

 

唱吧电脑版