在带有Qt5.15的Windows上,我实现了一个基于QNetworkInterface的电缆连接/断开通知器。
它每秒钟调用allinterfaces()并检查标志。它起作用了。
然而,现在我想知道有什么选择。有没有一种更简单的方法,也许是我应该听的本地Windows的东西?
发布于 2022-07-18 07:51:38
在QNetworkInterface中并没有真正的信号。轮询是使用isUp方法实现这一跨平台的唯一方法。
我不会损害Windows特定API的跨平台行为,因为这会对应用程序的可移植性产生影响。
投票对你来说可能并不理想,但它是跨平台的。这在Qt应用程序中似乎是一个很强的值。
此外,电缆断开并不是接口可能不可用的唯一原因。这也是为什么经常会有一个"ping超时“来检测网络接口崩溃时的各种情况。
如果您认为应该有这样的信号,您可以在(Jira)上打开一张票来解释您的用例。如果他们认为你的要求是合理的,最终可能有人会为你实现它。如果你自己提交补丁,那就更好了。
发布于 2022-07-17 14:15:05
我知道两种倾听这些事件的方法。
一个是NotifyIpInterfaceChange C。非常容易使用:调用该函数,传递一个回调,当情况发生变化时,Windows将调用您。
另一个是INetworkListManagerEvents COM接口。得到通知要复杂得多,但这里有一个工作流。
CLSID_NetworkListManager的符号常量https://stackoverflow.com/questions/73012092
复制相似问题