捕获网络状态更改事件

时间:2010-01-20 11:44:41

标签: c++ windows network-programming wxwidgets connectivity

我正在尝试在丢失后重新建立互联网连接时获取事件。这是我正在开发的数据传输软件。如果我在数据传输过程中丢失了网络,我希望在它恢复时收到通知,并自动继续传输。

我当然可以创建一个单独的线程并使用计时器检查网络,但也许有更好的选择。

我主要用Windows开发,用C ++(不是.net)开发。

我也可以使用wxwidgets(我将它用于GUI),但我怀疑它提供了任何相关的功能。

4 个答案:

答案 0 :(得分:2)

您可能想要查看系统事件通知服务器(SENS)API http://msdn.microsoft.com/en-us/library/cc185680(VS.85).aspx

我实际上并没有使用它,但似乎它提供了你想要的事件。

编辑:

WMI似乎拥有您需要的有关各种网络连接和状态更改的所有信息。它还有一个异步事件模型,可用于获取通知。我想,诀窍是生成适当的WMI查询以获取您想要的信息。这个blog看起来像是正确的查询类型,而MSDN解释了如何异步处理事件。

答案 1 :(得分:0)

我不知道您使用的是哪种协议以及您是否可以控制目的地,但在这种情况下,目的地可以轮询重试。目的地最好知道它收到了什么,因此它可以将接收到的字节数作为重传的偏移量。

答案 2 :(得分:0)

此MSDN链接提供了有关如何使用COM捕获WMI上的事件的非常详细的示例。该示例实际上并未捕获网络事件 - 但我相信如果您插入正确的查询,它将起作用。

(这里有很多代码,所以我不会把它复制到答案中) http://msdn.microsoft.com/en-us/library/aa390425%28v=vs.85%29.aspx

答案 3 :(得分:0)

此Codeproject链接提供了有关的详细信息

如何使用Windows NLM API来获得有关新网络的通知 连接性

也许可以帮助解决与此相关的任何挑战。

应用程序通常需要知道计算机是否具有互联网 连接并据此采取措施。在此示例中,我们 正在研究托管代码中Windows NLM API的用法,因此 应用程序可以选择响应互联网连接 变化。还有许多其他特定的NLM API用于检查域 连接性,网络适配器接口等 在本文中提到;您可以参考此链接以进一步了解 细节。可下载的zip文件包含源代码。

更多阅读此处

https://www.codeproject.com/Articles/34650/How-to-use-the-Windows-NLM-API-to-get-notified-of

相关问题