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;
}
相关推荐
树码小子1 天前
Java网络编程:(socket API编程:TCP协议的 socket API -- 回显程序的服务器端程序的编写)
java·网络·tcp/ip
TESmart碲视1 天前
Mac 真正多显示器支持:TESmart USB-C KVM(搭载 DisplayLink 技术)如何实现
macos·计算机外设·电脑
我是菜鸟0713号2 天前
Qt 中 OPC UA 通讯实战
开发语言·qt
JCBP_2 天前
QT(4)
开发语言·汇编·c++·qt·算法
路由侠内网穿透2 天前
本地部署 GPS 跟踪系统 Traccar 并实现外部访问
运维·服务器·网络·windows·tcp/ip
lqjun08272 天前
Qt程序单独运行报错问题
开发语言·qt
酷飞飞2 天前
Python网络与多任务编程:TCP/UDP实战指南
网络·python·tcp/ip
智慧地球(AI·Earth)2 天前
给AI配一台手机+电脑?智谱AutoGLM上线!
人工智能·智能手机·电脑
风_峰2 天前
【ZYNQ开发篇】Petalinux和电脑端的静态ip地址配置
网络·嵌入式硬件·tcp/ip·ubuntu·fpga开发
酷飞飞2 天前
Qt Designer与事件处理
开发语言·qt·命令模式