目标获取本地主机的网络信息:
首先pro文件中添加QT += quick network
获取主机名:
QString m_hostName=QHostInfo::localHostName();
根据主机名获取网络信息:
QString m_hostName = QHostInfo::localHostName();
//QHostInfo 提供了一系列有关网络配置的函数
//formName函数是堵塞的
QHostInfo m_hostInfo = QHostInfo::formName(m_hostName);
if(m_hostInfo .error()!=QHostInfo::NoError)
{
qDebug()<<QString("查找失败,错误代码:%1").arg(m_hostInfo .errorString());
}
//获取主机的IP地址列表
QList<QHostAddress> m_listAddres = m_hostInfo.addresses();
//遍历该容器的方法建议使用迭代器,直接用数组下标方法访问会越界。用迭代器就不会(神奇)
foreach(QHostAddress interface,m_listAddres )
{
//打印Ip地址列表
qDebug()<<interface.toString();
}
获取网络设备信息
1:获取主机IP地址和网络接口的列表
QList<QNetworkInterface> m_list =QNetworkInterface::allInterfaces();
2:遍历获取每一个设备并获取每一个设备的信息,建议用迭代器的方法遍历
foreach(QNetworkInterface interface,list)
{
m_detail =m_detail+tr("设备: ")+interface.name()+"\n";
m_detail =m_detail+tr("硬件地址: ")+interface.hardwareAddress()+"\n";
QList<QNetworkAddressEntry>entryList =interface.addressEntries();
foreach(QNetworkAddressEntry entryface,entryList)
{
m_detail =m_detail+"\t"+tr("IP地址:")+entryface.ip().toString()+"\n";
m_detail =m_detail+"\t"+tr("子网掩码:")+entryface.netmask().toString()+"\n";
m_detail =m_detail+"\t"+tr("广播地址:")+entryface.broadcast().toString()+"\n";
}
}
完整源码,qt6+qtquick:gitlab下载地址