//获取本机IP
QStringList simumenu::getLocalIPv4Address()
{
QStringList ipList;
//获取所有网络接口
QList<QNetworkInterface> interfaces = QNetworkInterface::allInterfaces();
for (const QNetworkInterface &interface : interfaces)
{
// 过滤掉非运行状态和回环接口
if (interface.flags().testFlag(QNetworkInterface::IsUp) &&
interface.flags().testFlag(QNetworkInterface::IsRunning) &&
!interface.flags().testFlag(QNetworkInterface::IsLoopBack))
{
// 获取接口的所有IP地址
QList<QNetworkAddressEntry> entries = interface.addressEntries();
for (const QNetworkAddressEntry &entry : entries) {
QHostAddress ip = entry.ip();
// 筛选IPv4地址
if (ip.protocol() == QAbstractSocket::IPv4Protocol) {
ipList.append(ip.toString());
}
}
}
}
return ipList;
}
拓展知识:
-
获取接口的名称(
QNetworkInterface::name()
)。 -
获取接口的硬件地址(
QNetworkInterface::hardwareAddress()
)。 -
获取接口的IP地址(
QNetworkInterface::allAddresses()
)。 -
检查接口是否处于活动状态(
QNetworkInterface::flags()
)。