我正在尝试获取Internet连接丢失后重新建立时的事件。这是我正在开发的数据传输软件。如果我在数据传输过程中丢失网络,我希望在网络恢复时得到通知,并自动继续传输。我当然可以创建一个单独的线程,并检查网络一次,在一段时间与计时器,但也许有一个更好的选择在那里。我主要是为Windows开发的,用C++(不是.net)。我也可以使用wxwidgets(我将它用于GUI),但我怀疑它是否提供了任何相关的功能。
lc8prwob1#
你可能想看看System Event Notification Server (SENS) API。我还没有真正使用过它,但它似乎提供了您寻找的事件。编辑:WMI似乎有你需要的关于各种网络连接和状态变化的所有信息。它也有一个异步事件模型,可以用来获取通知。我想,诀窍是生成正确的WMI查询来获取你想要的信息。这个blog看起来像是正确的查询类型,这个MSDN解释了如何异步处理事件。
oknwwptz2#
我不知道你用的是哪种协议,也不知道你是否能控制目的地,但在这种情况下,目的地可以轮询重试,目的地最清楚它收到了什么,所以它可以给予收到的字节数作为重传的偏移量。
db2dz4w83#
这个MSDN链接给出了一个非常详细的例子,说明如何用COM捕获WMI上的事件。这个例子实际上并没有捕获网络事件--但我相信,如果你插入正确的查询,它会起作用。(lots的代码,所以我不将其复制到答案中)http://msdn.microsoft.com/en-us/library/aa390425%28v=vs.85%29.aspx
ivqmmu1c4#
此代码项目链接提供了以下详细信息如何使用Windows NLM API获取新网络连接的通知也许对任何与此有关的挑战都有帮助。应用程序通常需要知道计算机是否具有Internet连接并根据此连接采取操作。在此示例中,我们将查看Windows NLM API在托管代码中的用法,以便应用程序可以选择响应Internet连接更改。还有许多其他特定的NLM API用于检查域连接、网络适配器接口等,本文中未提及这些API;你可以参考这个连结以取得进一步的资料。2可下载的zip档案有源代码。更多阅读https://www.codeproject.com/Articles/34650/How-to-use-the-Windows-NLM-API-to-get-notified-of
4条答案
按热度按时间lc8prwob1#
你可能想看看System Event Notification Server (SENS) API。
我还没有真正使用过它,但它似乎提供了您寻找的事件。
编辑:
WMI似乎有你需要的关于各种网络连接和状态变化的所有信息。它也有一个异步事件模型,可以用来获取通知。我想,诀窍是生成正确的WMI查询来获取你想要的信息。这个blog看起来像是正确的查询类型,这个MSDN解释了如何异步处理事件。
oknwwptz2#
我不知道你用的是哪种协议,也不知道你是否能控制目的地,但在这种情况下,目的地可以轮询重试,目的地最清楚它收到了什么,所以它可以给予收到的字节数作为重传的偏移量。
db2dz4w83#
这个MSDN链接给出了一个非常详细的例子,说明如何用COM捕获WMI上的事件。这个例子实际上并没有捕获网络事件--但我相信,如果你插入正确的查询,它会起作用。
(lots的代码,所以我不将其复制到答案中)http://msdn.microsoft.com/en-us/library/aa390425%28v=vs.85%29.aspx
ivqmmu1c4#
此代码项目链接提供了以下详细信息
如何使用Windows NLM API获取新网络连接的通知
也许对任何与此有关的挑战都有帮助。
应用程序通常需要知道计算机是否具有Internet连接并根据此连接采取操作。在此示例中,我们将查看Windows NLM API在托管代码中的用法,以便应用程序可以选择响应Internet连接更改。还有许多其他特定的NLM API用于检查域连接、网络适配器接口等,本文中未提及这些API;你可以参考这个连结以取得进一步的资料。2可下载的zip档案有源代码。
更多阅读
https://www.codeproject.com/Articles/34650/How-to-use-the-Windows-NLM-API-to-get-notified-of