【问题标题】:Detecting network state (connected - disconnected) in C#在 C# 中检测网络状态(连接 - 断开)
【发布时间】:2009-06-01 18:15:23
【问题描述】:

我需要一段可以检测网络连接是连接还是断开的代码。连接状态意味着电缆已插入以太网连接。断开状态意味着没有连接电缆。

由于我在 Windows CE 上运行,我无法使用 WMI 界面。我不介意调用 Win32 API,但请记住我使用的是 Windows CE 并在 Compact Framework 上运行。

【问题讨论】:

  • 要记住的一点是网络连接不等于互联网连接。听起来您已经明白了,因为您将 connected 定义为“将电缆插入以太网连接”,但它需要重复。

标签: c# compact-framework networking windows-ce ethernet


【解决方案1】:

最简单的方法是使用OpenNETCF's SDF 并查看OpenNETCF.Net.NetworkInformation.NetworkInterfaceWatcher class,它会在 NDIS 发出通知(如 MEDIA_CONNECT 和 MEDIA_DISCONNECT)时引发事件。

当然,您可以在没有 SDF 的情况下完成相同的工作。它涉及直接打开 NDIS 驱动程序并使用 P2P 消息队列句柄调用 IOCTL_NDISUIO_REQUEST_NOTIFICATION。这并不太难,但你必须做很多事情才能让它工作并且不泄漏。

【讨论】:

【解决方案2】:

【讨论】:

  • 链接指向的“解决方案”不会检测电缆是否存在——它会检测主机是否可达。正如乔尔指出的那样,这是完全不同的两件事。
【解决方案3】:

致电GetAdaptersInfo 并在可用网络适配器列表中循环,直到找到您正在寻找的那个?

【讨论】:

    【解决方案4】:

    要记住的一点是,网络连接不等于互联网连接。

    听起来您已经明白了,因为您将连接定义为“电缆已插入以太网连接”,但需要重复。

    【讨论】:

    • 是的,我明白这一点。我真的很想检测“电缆”连接状态。
    • @kelton52 同意。自 2009 年 6 月以来,规则发生了变化 :) 我已经添加了评论,我会在几分钟后删除它。
    猜你喜欢
    • 1970-01-01
    • 2019-03-04
    • 1970-01-01
    • 2017-06-15
    • 1970-01-01
    • 2013-02-10
    • 2019-03-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多