检测网络电缆未插入

20

Windows知道您是否已从NIC中拔出网络电缆。是否有一种以C ++编程的API方式可以确定此信息?

注意:我不使用.NET,这是针对一个封闭的局域网(永远不连接到互联网)。


1
Ping google.com,如果没有响应,请考虑电缆未插好。 :) - Dima
1
只有当您通过某个网关连接到互联网而不是封闭的局域网时,才能正常工作 :) - user195488
2个回答

9

最近Raymond Chen 在博客中谈到了类似的事情。这里是相关的文档。我认为MIB_IPADDR_DISCONNECTED标志是您要查找的内容。


1

使用Network List Manager api和INetwork api。

您可以注册您的应用程序以接收网络连接/未连接时的回调。

或者您可以获取网络列表,然后检查每个网络以查看机器是否已连接到网络。

请记住,Windows 计算机通常会设置多个网络(Ethernet、Wi-Fi 等)。

请记住,仅因为一个网络已连接,您可能并没有访问互联网。例如,您可能会遇到 DNS 或路由问题。或者您可能连接到一个工作网络,但该网络未连接到互联网。

由于以上原因,许多诊断工具也会连接到“已知良好”的互联网服务器,以确切地了解它们是否已连接。类似于 google.com 这样的东西。他们花费大量资金确保其网站始终处于上线状态。

最后,您还可以拥有半连接状态,其中数据包正在传输,但不足以真正启用通信。为了测试这一点,不要只 ping 一个互联网站点,因为那只是一对数据包。代替地,打开一个 TCP 连接或其他比 ping 更多的内容。


不确定为什么大家认为我在谈论互联网 :) 我想我应该更明确,这更多是关于封闭的局域网场景。 - user195488
1
INetwork http://msdn.microsoft.com/en-us/library/aa370750(VS.85).aspx 允许您分别询问“我是否在网络上”和“我是否在互联网上”的问题。这个答案会给你所需的信息。 - Kate Gregory
有XP版本吗?这里只提到了Vista和2008。 - user195488

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接