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");
}
}
}
Qt中如何主机上所有接口的网络列表
最新推荐文章于 2025-04-15 20:44:49 发布