我是 Qt 的新手。实际上,我想通过 qt 应用程序检查以太网是否已连接。例如:当数据通过以太网从源传输到目标时。如果我突然拔掉以太网电缆,我的 Qt 应用程序必须给出一些弹出消息,例如“连接不可用”。有没有办法找到这个?最后,对不起我的英语。
问问题
784 次
2 回答
0
如果您在 Linux 上,我在某处发现了一个好主意,可以检查以太网电缆是否物理连接到 QT 和 QProcess。
QProcess process;
QString sNetCableStatus = "";
process.start("sh", QStringList()<<"-c"<<"grep \"\" /sys/class/net/eth0/carrier");
process.waitForFinished();
sNetCableStatus = process.readAllStandardOutput();
if (sNetCableStatus.length() != 0)
{
if (sNetCableStatus.left(1) == "1")
{
//connected
}
else if(sNetCableStatus.left(1) == "0")
{
//disconnected
}
else
{
//that should not happen
}
}
于 2021-04-10T10:12:50.503 回答
0
您可能需要考虑 Qt “承载管理” API:
http://doc.qt.io/qt-5/bearer-management.html
例如:
/ Set Internet Access Point
QNetworkConfigurationManager manager;
const bool canStartIAP = (manager.capabilities()
& QNetworkConfigurationManager::CanStartAndStopInterfaces);
// Is there default access point, use it
QNetworkConfiguration cfg = manager.defaultConfiguration();
if (!cfg.isValid() || (!canStartIAP && cfg.state() != QNetworkConfiguration::Active)) {
QMessageBox::information(this, tr("Network"), tr(
"No Access Point found."));
return;
}
于 2018-12-14T07:02:30.880 回答