3

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

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

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

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

4

4 回答 4

2

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

我实际上并没有使用它,但它似乎提供了您正在寻找的事件。

编辑:

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

于 2010-01-20T22:46:36.680 回答
0

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

于 2010-01-20T13:27:25.250 回答
0

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

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

于 2014-05-04T19:36:27.203 回答
0

这个 Codeproject 链接提供了关于

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

并且可能对与此相关的任何挑战有所帮助。

应用程序通常需要知道机器是否具有 Internet 连接并据此采取行动。在此示例中,我们正在查看托管代码中 Windows NLM API 的使用,以便应用程序可以选择响应 Internet 连接更改。还有许多其他特定的 NLM API 用于检查域连接、网络适配器接口等,本文未提及;您可以参考此链接了解更多详情。可下载的 zip 文件有源代码。

更多阅读在这里

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

于 2020-08-10T03:48:02.993 回答