欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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;//获取到第一个活跃的跳出
             }
         }
     }
 }

QT ip地址,格式为 “::ffff:127.0.0.1” 解决方法