捕获networking状态更改事件

当互联网连接在丢失后重新build立时,我试图获得事件。 这是我正在开发的数据传输软件。 如果在数据传输过程中丢失了networking,我想在返回时收到通知,并自动继续传输。

我当然可以创build一个单独的线程,并用一个计时器检查一下networking,但也许有一个更好的select。

我正在开发的Windows主要是在C + +(不是.net)。

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

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

我没有真正使用它,但它似乎提供了你要找的事件。

编辑:

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

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

这个MSDN链接提供了一个非常详细的例子,说明如何在COM上捕获WMI上的事件。 该示例实际上并不捕获网络事件 – 但我相信,如果您插入正确的查询,它将工作。

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