C++ 检测网络电缆何时拔出

C++ 检测网络电缆何时拔出,c++,networking,windows-xp,C++,Networking,Windows Xp,Windows知道您何时已从NIC中卸下网络电缆。在C++中有一种通过API来确定这个程序的方法吗? 注意:我没有使用.NET,这是针对封闭的LAN(从未连接到Internet)使用INetwork api 您可以注册应用程序,以便在网络连接/未连接时接收回调 或者,您可以获取网络列表,然后检查每个网络,查看机器是否已连接网络 请记住,windows计算机通常会设置多个网络(以太网、wifi等) 请记住,仅仅因为网络已连接,您可能无法访问internet。例如,您可能有DNS或路由问题。或者,您

Windows知道您何时已从NIC中卸下网络电缆。在C++中有一种通过API来确定这个程序的方法吗?

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

使用INetwork api

您可以注册应用程序,以便在网络连接/未连接时接收回调

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

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

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

由于上述原因,许多诊断工具如果想真正了解是否连接,也会连接到“已知良好”的internet服务器。比如google.com,他们花了很多钱来确保他们的网站一直处于运行状态


最后,您还可以有一种半连接的情况,即数据包正在通过,但不足以真正实现通信流。为了测试这一点,不要只对互联网站点进行ping,因为这只是一对数据包。相反,打开TCP连接或ping以外的其他连接。

雷蒙德·陈最近也谈到了类似的事情。这里是相关的。我认为MibIIPADRRIX断开的标志是你正在寻找的。

ping Google网站,如果你没有响应,请考虑电缆拔掉。这只适用于通过某个网关而不是封闭的LAN连接到Internet的情况:)不确定为什么每个人都认为我在谈论Internet:)我想我应该更清楚,这更多的是关于封闭的LAN场景。Inetwork让你分别问“我在网络上吗”和“我在Internet上吗”。这个答案给了你所需要的。XP有什么需要吗?这里只写Vista和2008