在带界面的嵌入式系统仪器中,一般使用qt做界面开发,设备基本支持网口,对于网络的拔插需要做检测并实时显示更新图标等。
之前试过qt自带的类,使用信号槽的方式监测网线的拔插,后来发现无效,未深究原因,后来就想着使用如下函数监测是否插入网线,并使用定时器不断定时监测更新(这样操作可能消耗一些cpu)。
检测函数如下:
#include <QNetworkInterface>
bool StatusBarInstance::haveInputNetwork()
{
QList<QNetworkInterface> ifaces = QNetworkInterface::allInterfaces();
bool isConnected = false;
for (int i = 0; i < ifaces.count(); i++)
{
QNetworkInterface iface = ifaces.at(i);
if ( iface.flags().testFlag(QNetworkInterface::IsUp)
&& iface.flags().testFlag(QNetworkInterface::IsRunning)
&& !iface.flags().testFlag(QNetworkInterface::IsLoopBack)
)
{
for (int j=0; j<iface.addressEntries().count(); j++)
{
if (isConnected == false)
isConnected = true;
}
}
}
return isConnected;
}