这种情况下会出现意向不到的效果
QList<QHostAddress> ipAddressesList = QNetworkInterface::allAddresses();
for (int i = 0; i < ipAddressesList.size(); ++i) {
if (ipAddressesList.at(i) != QHostAddress::LocalHost &&
ipAddressesList.at(i).toIPv4Address()) {
m_ipAddress = ipAddressesList.at(i).toString();
break;
}
}
if (m_ipAddress.isEmpty())
m_ipAddress = QHostAddress(QHostAddress::LocalHost).toString();
推荐使用命令行的方式
QProcess cmd_pro ;
QString cmd_str = QString("ipconfig");
cmd_pro.start("cmd.exe", QStringList() << "/c" << cmd_str);
cmd_pro.waitForStarted();
cmd_pro.waitForFinished();
QString result = cmd_pro.readAll();
QString pattern("[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}");
QRegExp rx(pattern);
int pos = 0;
bool found = false;
while((pos = rx.indexIn(result, pos)) != -1){
QString tmp = rx.cap(0);
//跳过子网掩码 eg:255.255.255.0
if(-1 == tmp.indexOf("255")){
if(m_ipAddress != "" && -1 != tmp.indexOf(m_ipAddress.mid(0,m_ipAddress.lastIndexOf(".")))){
found = true;
break;
}
m_ipAddress = tmp;
}
pos += rx.matchedLength();
}