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;
}
相关推荐
Larry_Yanan9 分钟前
Qt网络开发之基于 QWebEngine 实现简易内嵌浏览器
linux·开发语言·网络·c++·笔记·qt·学习
扁舟·TF2 小时前
VirtuaBox: 修改 Host-Only 网络的 IP 地址
服务器·网络·tcp/ip
Flash.kkl3 小时前
TCP套接字
服务器·网络·tcp/ip
一然明月3 小时前
Qt QML 锚定(Anchors)全解析
java·数据库·qt
劳埃德福杰3 小时前
【Kylin银河麒麟】文件系统磁盘空间满导致无法进入操作系统
运维·服务器·电脑·笔记本电脑·kylin
一只爱学习的小鱼儿3 小时前
使用QT编写粒子显示热力图效果
开发语言·qt
大树学长3 小时前
【QT开发】Redis通信相关(一)
redis·qt
笨笨马甲3 小时前
Qt 人脸识别
开发语言·qt
23.4 小时前
【网络】TCP与HTTP:网络通信的核心机制解析
网络·tcp/ip·http
袁小皮皮不皮4 小时前
【HCIA】第三章TCP/IP协议栈中其他主要协议
运维·服务器·网络·网络协议·tcp/ip