获取网络接口的IP地址很简单,主要就是过滤问题。因为会同时获得包括链路地址、本地回环地址等
allAddresses()函数获取所有的IP地址,但改方式不便于区别虚拟机的虚拟IP地址:
/*过滤链路地址*/
quint32 nMinRange = QHostAddress("169.254.1.0").toIPv4Address();
quint32 nMaxRange = QHostAddress("169.254.254.255").toIPv4Address();
/****分割线***/
QList<QHostAddress> tempList = QNetworkInterface::allAddresses();
foreach(QHostAddress address, tempList)
{
if(address.protocol() == QAbstractSocket::IPv4Protocol && address != QHostAddress::Null && address != QHostAddress::LocalHost)
{
if(address.isLoopback())
continue;
quint32 nIPV4 = address.toIPv4Address();
if((nIPV4 >= nMinRange) && (nIPV4 <= nMaxRange))
continue;
QString Ip = address.toString();
/********代码块**********/
}
}