首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获得电缆连接/断开通知

获得电缆连接/断开通知
EN

Stack Overflow用户
提问于 2022-07-17 13:13:02
回答 2查看 64关注 0票数 0

在带有Qt5.15的Windows上,我实现了一个基于QNetworkInterface的电缆连接/断开通知器。

它每秒钟调用allinterfaces()并检查标志。它起作用了。

然而,现在我想知道有什么选择。有没有一种更简单的方法,也许是我应该听的本地Windows的东西?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-07-18 07:51:38

在QNetworkInterface中并没有真正的信号。轮询是使用isUp方法实现这一跨平台的唯一方法。

我不会损害Windows特定API的跨平台行为,因为这会对应用程序的可移植性产生影响。

投票对你来说可能并不理想,但它是跨平台的。这在Qt应用程序中似乎是一个很强的值。

此外,电缆断开并不是接口可能不可用的唯一原因。这也是为什么经常会有一个"ping超时“来检测网络接口崩溃时的各种情况。

如果您认为应该有这样的信号,您可以在(Jira)上打开一张票来解释您的用例。如果他们认为你的要求是合理的,最终可能有人会为你实现它。如果你自己提交补丁,那就更好了。

票数 0
EN

Stack Overflow用户

发布于 2022-07-17 14:15:05

我知道两种倾听这些事件的方法。

一个是NotifyIpInterfaceChange C。非常容易使用:调用该函数,传递一个回调,当情况发生变化时,Windows将调用您。

另一个是INetworkListManagerEvents COM接口。得到通知要复杂得多,但这里有一个工作流。

  1. 在某个类中实现该COM接口。
  2. 使用INetworkListManager创建CoCreateInstance对象,SDK有一个用于类ID CLSID_NetworkListManager的符号常量
  3. 调用QueryInterface获取该对象的IConnectionPointContainer接口
  4. 调用IConnectionPointContainer.FindConnectionPoint传递IID_INetworkListManagerEvents
  5. 创建实现INetworkListManagerEvents回调接口的类实例,调用IConnectionPoint.Advise。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73012092

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档