QT获取网线拔插状态以及扫描网卡信息(windos)
以下是代码,添加好相关头文件就可以使用
void MainWindow::scan_netlink()
{
QString localHostName=QHostInfo::localHostName();
ui->display->append(localHostName);//主机名
QHostInfo info=QHostInfo::fromName(localHostName);
qDebug()<<"IP Address:"<<info.addresses();//获取当前主机名下ip信息
foreach(QHostAddress address,info.addresses()){
if(address.protocol()==QAbstractSocket::IPv4Protocol){
qDebug()<<"address"<<address.toString();//当前使用的ipv4信息
}
}
QList<QNetworkInterface> list=QNetworkInterface::allInterfaces();//获取所有网卡接口信息到list
//遍历接口信息
foreach(QNetworkInterface interface,list){
qDebug()<<"Device:"<<interface.name();//设备名称
qDebug()<<"type"<<interface.type();//设备类型(eth or wifi)
qDebug()<<"humanReadableName"<<interface.humanReadableName();//接口描述
qDebug()<<"HardwareAddress:"<<interface.hardwareAddress();//当前接口的MAC信息
QList<QNetworkAddressEntry> iplist = interface.addressEntries();//获取当前
QNetworkInterface::InterfaceFlags flags = interface.flags();//获取接口状态信息
//遍历当前接口下的信息
foreach(QNetworkAddressEntry s,iplist)
{
qDebug()<<"current ip"<<s.ip();
if(flags.testFlag(QNetworkInterface::IsUp))//查看当前接口是否处于活动状态
{
qDebug()<<"is up"<<s.ip().toString();
}else
{
qDebug()<<"is down";
}
}
}
}