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;
}
相关推荐
上海云盾第一敬业销售3 小时前
高防IP可以防护什么攻击类型?企业网络安全的第一道防线
网络·tcp/ip·web安全
不吃香菜的猪5 小时前
华硕电脑,全新的超频方式,无需进入BIOS
电脑·华硕·cpu超频
心扬5 小时前
python网络编程
开发语言·网络·python·tcp/ip
情系淮思6 小时前
客户端和服务器已成功建立 TCP 连接【输出解析】
服务器·网络·tcp/ip
Digitally7 小时前
如何以 9 种方式将照片从手机传输到笔记本电脑
智能手机·电脑
2501_915106328 小时前
Flutter、React Native 项目如何搞定 iOS 上架?从构建 IPA 到上传 App Store 的实战流程全解析
websocket·网络协议·tcp/ip·http·网络安全·https·udp
委婉待续9 小时前
Qt的学习(一)
开发语言·qt·学习
笨笨马甲9 小时前
Qt Quick Layout功能及架构
开发语言·qt
feiyangqingyun10 小时前
Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动
c++·qt·udp·gb28181
2301_7930698211 小时前
Azure 虚拟机端口资源:专用 IP 和公共 IP Azure Machine Learning 计算实例BUG
tcp/ip·flask·azure