综合网上查到的信息整理的一份在QT环境下获取本地IP地址的函数
QString getHostIp()
{
QStringList addresses;
QList<QNetworkInterface> interfaceList = QNetworkInterface::allInterfaces();
foreach(QNetworkInterface interfaceItem, interfaceList)
{
if (interfaceItem.flags().testFlag(QNetworkInterface::IsUp)
&& interfaceItem.flags().testFlag(QNetworkInterface::IsRunning)
&& interfaceItem.flags().testFlag(QNetworkInterface::CanBroadcast)
&& interfaceItem.flags().testFlag(QNetworkInterface::CanMulticast)
&& !interfaceItem.flags().testFlag(QNetworkInterface::IsLoopBack)
&& interfaceItem.hardwareAddress() != "00:50:56:C0:00:01"
&&interfaceItem.hardwareAddress() != "00:50:56:C0:00:08")
{
QList<QNetworkAddressEntry> addressEntryList = interfaceItem.addressEntries();
foreach(QNetworkAddressEntry addressEntryItem, addressEntryList)
{
if (addressEntryItem.ip().protocol() == QAbstractSocket::IPv4Protocol)
{
qDebug() << "------------------------------------------------------------";
qDebug() << "Adapter Name:" << interfaceItem.name();
qDebug() << "Adapter Address:" << interfaceItem.hardwareAddress();
qDebug() << "IP Address:" << addressEntryItem.ip().toString();
addresses << addressEntryItem.ip().toString();
qDebug() << "IP Mask:" << addressEntryItem.netmask().toString();
}
}
}
}
QString localHostName = QHostInfo::localHostName();
QString ipAddress = "";
qDebug() << "localHostName:" << localHostName;
QHostInfo info = QHostInfo::fromName(localHostName);
foreach(QHostAddress address, info.addresses())
{
if( (address.protocol() == QAbstractSocket::IPv4Protocol) && (!address.isLinkLocal()) )
{
if (addresses.contains(address.toString()))
{
ipAddress = address.toString();
break;
}
}
}
return ipAddress;
}