版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012911202/article/details/83822496
环境:win7_64 + VS2012 +Qt5
利用QT获取本机IP地址,示例代码如下
bool bFindLocalIP = false;
QString qsLocalIP;
//局域网网段192.168.0.0/16,表示192.168.0~255.0~255.可以根据实际情况设置
QPair<QHostAddress,int> rangeIp = QHostAddress::parseSubnet("192.168.0.0/16");
QList<QNetworkInterface> networkInterface = QNetworkInterface::allInterfaces();
QList<QNetworkInterface>::const_iterator itFace = networkInterface.begin();
for(; itFace != networkInterface.end(); itFace++)
{
if ((*itFace).isValid() && !(*itFace).humanReadableName().contains("VMware"))
{
QList<QNetworkAddressEntry> addressEntriesList = (*itFace).addressEntries();
QList<QNetworkAddressEntry>::const_iterator itEntries = addressEntriesList.begin();
for(; itEntries != addressEntriesList.end(); itEntries++)
{
if( itEntries->ip().protocol() == QAbstractSocket::IPv4Protocol &&
itEntries->ip().isInSubnet(rangeIp))
{
qsLocalIP = itEntries->ip().toString();
bFindLocalIP = true;
break;
}
}
if (bFindLocalIP)
{
break;
}
}
}