Qt中如何主机上所有接口的网络列表

Qt中提供了一个函数:QList<QNetworkInterface>::allInterface().用于返回网络列表。若列表不为空,则获取列表内的元素QNetworkInterface进一步细分。
 QList<QNetworkInterface> list = QNetworkInterface::allInterfaces();//获取网络列表。
然后对于list,使用循环单独来获取list里面的每个元素QNetworkInterface:
QNetworkInterface intface = list.at(i);
并且对于每个元素还得判定是否有效:intface.isValid()
硬件名称:intface.humanReadableName()来获取
硬件地址:intface.hardwareAddress()来获取
ip地址,子网掩码,广播地址都被封装在QNetworkAddressEntry中。我们需要单独的罗列出来
QList<QNetworkAddressEntry> entryList = intface.addressEntries();//首先获取封装的列表
在列表中单独分出来ip地址,子网掩码,广播地址。entry.ip(),entry.netmask(),entry.broadcast()
以下的全部代码:
void MainWindow::on_btn_alldresses_clicked()
{
    QList<QNetworkInterface> list = QNetworkInterface::allInterfaces();
    if(!list.isEmpty())
        for(int i=0;i<list.size();i++)
        {
            QNetworkInterface intface = list.at(i);
            if(!intface.isValid())
                continue;
            ui->plainTextEdit->appendPlainText("设备名称: "+intface.humanReadableName());
            ui->plainTextEdit->appendPlainText("硬件地址: "+intface.hardwareAddress());
            QList<QNetworkAddressEntry> entryList = intface.addressEntries();
            for(int j = 0;j<entryList.size();j++)
            {
                QNetworkAddressEntry entry = entryList.at(j);
                ui->plainTextEdit->appendPlainText("IP地址: "+entry.ip().toString());
                ui->plainTextEdit->appendPlainText("子网掩码: "+entry.netmask().toString());
                ui->plainTextEdit->appendPlainText("广播地址: "+entry.broadcast().toString()+'\n');
                ui->plainTextEdit->appendPlainText("\n");
            }
        }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值