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;
补充: