QT - 获取本地IPV4 地址
程序员文章站
2024-02-14 15:13:34
...
直接上代码,大家想要可以自行封装成函数
方法一:使用QHostAddress
//QList<QHostAddress> address = QNetworkInterface::allAddresses();
foreach (QHostAddress ptr , QNetworkInterface::allAddresses())
{
if(ptr.protocol() == QAbstractSocket::IPv4Protocol){// 获取ipv4地址
if(!ptr.isLoopback()) // 过滤本地回环127.0.0.1
qDebug() << "address: " <<ptr.toString()<< endl; // 在这里输出本地局域网ip
}
}
方法二:使用QNetworkInterface从本地所有网卡获取活跃的IP
//qt获得网卡信息状态
QString rip="";
//QList<QNetworkInterface> list = QNetworkInterface::allInterfaces();
foreach (QNetworkInterface netInterface, QNetworkInterface::allInterfaces())
{
if (!netInterface.isValid())//包含有关网络接口的有效信息,则返回true。
continue;
QNetworkInterface::InterfaceFlags flags = netInterface.flags();
// 网络接口处于活动状态 && 不是本地回环地址
if (flags.testFlag(QNetworkInterface::IsRunning)
&& !flags.testFlag(QNetworkInterface::IsLoopBack))
{
// 遍历每一个IP地址
QList<QNetworkAddressEntry> entryList = netInterface.addressEntries();
foreach(QNetworkAddressEntry entry, entryList)
{
if(entry.ip().toString()!="" && entry.ip().toString()!="0.0.0.0")
{
rip=entry.ip().toString();
break;//获取到第一个活跃的跳出
}
}
}
}
上一篇: ipv4保留地址
下一篇: Java 获取主机ip地址(ipv4)