QT获取电脑网卡IP等信息

文章目录


一、背景信息

电脑有一个或者多个网卡,如下图所示:

一个网卡又可以配有多个IP地址,包括 IPv4 和 IPv6 地址:

二、代码实现

以下代码实现了查找电脑所有网卡,并获取某个网卡的 IP 等信息:

cpp 复制代码
int main() {
    // 获取所有网卡信息
    QComboBox *m_netCardComboBox;
    QList<QNetworkInterface> m_allInterfaces = QNetworkInterface::allInterfaces();
    for (int i = 0; i < m_allInterfaces.size(); ++i) {
        QNetworkInterface netInterface = m_allInterfaces.at(i);
        // 过滤掉不活动的接口,把活跃的网卡名称添加到下拉框控件
        if (netInterface.flags().testFlag(QNetworkInterface::IsUp) &&
            netInterface.flags().testFlag(QNetworkInterface::IsRunning)) {
            m_netCardComboBox->addItem(netInterface.humanReadableName());
        }
    }
    // 获取当前下拉框选择的网卡IP等信息
    {
        int currentIndex = m_netCardComboBox->currentIndex();
        QNetworkInterface netInterface = m_allInterfaces.at(currentIndex);
        QList<QNetworkAddressEntry> addressEntries = netInterface.addressEntries();
        for (int k = 0; k < addressEntries.size(); ++k) {
            QNetworkAddressEntry entry = addressEntries.at(k);
            if (entry.ip().protocol() == QAbstractSocket::IPv4Protocol) {  // 这里筛选一下IPv4地址
                qDebug() << addressEntries.at(k).ip().toString();
                qDebug() << addressEntries.at(k).netmask().toString();
                qDebug() << addressEntries.at(k).broadcast().toString();
            }
        }
    }
    return 0;
}
相关推荐
洛水如云37 分钟前
换新电脑数据迁移全攻略:2 种方法转移文件 / 系统
windows·microsoft·电脑
Java成神之路-1 小时前
深度解析TCP连接管理:三次握手、四次挥手与保活机制
网络·网络协议·tcp/ip
史迪仔01121 小时前
[QML] 交互事件深度解析:鼠标、键盘、拖拽
前端·c++·qt
TechWayfarer2 小时前
当IP来自太空:卫星互联网时代的IP归属地查询挑战与落地实践
服务器·网络·tcp/ip
wuyoula2 小时前
Python IP服务器防火墙源码解析与应用——网站安全防护策略探讨
服务器·tcp/ip·安全
一晌小贪欢2 小时前
PyQt5 开发一个 PDF 批量合并工具
开发语言·qt·pdf
swift192212 小时前
Qt多语言问题 —— 静态成员变量
开发语言·c++·qt
用户805533698032 小时前
现代Qt开发教程(新手篇)1.4——容器
c++·qt
捞的不谈~2 小时前
LUCID相机(HTR003S-001)更改IP地址
网络·网络协议·tcp/ip
qq_466302452 小时前
u盘插入拔出,listView不显示盘符变化
c++·qt