【问题标题】:Detect When Network Cable Unplugged检测网络电缆何时拔出
【发布时间】:2011-02-24 08:47:27
【问题描述】:

Windows 知道您何时从 NIC 中移除了网络电缆。有没有一种编程方式通过 C++ 中的 API 来确定这一点?

注意:我没有使用 .NET,这是用于封闭 LAN(从未连接到 Internet)

【问题讨论】:

  • Ping google.com,如果没有响应,请考虑拔下电缆。 :)
  • 只有当您通过某个网关而不是封闭的 LAN 连接到 Internet 时才有效 :)

标签: c++ networking windows-xp


【解决方案1】:

Network List Manager api 与 INetwork api 一起使用。

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

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

请记住,Windows 机器通常会设置多个网络(以太网、wifi 等)

请记住,仅仅因为网络已连接,您可能无法访问互联网。例如,您可能遇到 DNS 或路由问题。或者,您可能在未连接到互联网的工作网络上。

由于上述原因,如果许多诊断工具想真正知道它们是否已连接,它们也会连接到“已知良好”的互联网服务器。像 google.com 这样的网站——他们花费大量资金来确保他们的网站一直正常运行。

最后,您还可能遇到半连接的情况,即数据包可以通过,但不足以真正使通信畅通。为了测试这一点,不要只 ping 一个互联网站点,因为那只是一对数据包。相反,请打开 TCP 连接或 ping 以外的其他方式。

【讨论】:

  • 不知道为什么每个人都认为我在谈论互联网 :) 我想我应该更清楚,这更多的是关于封闭的局域网场景
  • INetwork msdn.microsoft.com/en-us/library/aa370750(VS.85).aspx 让您可以分别提出“我在网络上吗”和“我在互联网上吗”这两个问题。这个答案给了你你需要的东西。
  • XP 有什么用吗?这仅表示 Vista 和 2008
【解决方案2】:

Raymond Chen blogged 最近有类似的事情。这是相关的documentation。我认为 MIB_IPADDR_DISCONNECTED 标志是您正在寻找的。​​p>

【讨论】:

    猜你喜欢
    • 2015-09-27
    • 2014-12-14
    • 2015-12-29
    • 2019-08-19
    • 2010-12-05
    • 2019-08-05
    • 1970-01-01
    • 2016-05-16
    • 1970-01-01
    相关资源
    最近更新 更多