代码之家  ›  专栏  ›  技术社区  ›  Suriyan Suresh

使用mono检查linux中的internet连接?

  •  2
  • Suriyan Suresh  · 技术社区  · 16 年前

    有没有办法用mono检查linux中的internet连接状态

    4 回复  |  直到 16 年前
        1
  •  2
  •   Mikayla Hutchinson    16 年前

    如果是桌面应用程序,可以使用ndesk.d bus库通过D总线查询NetworkManager(大多数Linux桌面上的网络连接管理器)。

    请参见女妖以获取示例: http://git.gnome.org/cgit/banshee/tree/src/Core/Banshee.Services/Banshee.Networking/NetworkManager.cs

        2
  •  1
  •   Gonzalo    16 年前

    除了michael已经建议的桌面应用程序之外,您还可以执行以下操作:

    foreach (NetworkInterface ni in NetworkInformation.GetAllNetworkInterfaces ()) {
           // Check that any or all of:
           //        -ni.OperationalStatus == OperationalStatus.Up
           //        -that ni.NetworkInterfaceType is ethernet or wireless80211
           //        -ni.GetIPProperties() has a gateway and a DNS server
           // ...
    }
    
        3
  •  1
  •   Zan Lynx    16 年前

    不管你最后用什么,都不可靠。

    我经常在WindowsVista和7上看到它。我使用家庭网络,所以我的电脑总是“连接”的。然而,它们并不总是连接到互联网。

    也就是说,我建议检查网络接口,正如冈萨洛所说。这是你最好的选择。

    我不指望网络管理员在场。我讨厌那玩意,只要有机会就把它关掉。它是巨大的,笨拙的,有一个丑陋的名字,依赖于像哈尔和德布斯这样的垃圾。早期的版本永久性地让我延迟,因为除非您登录到一个gui,否则它们无法工作。它还收集了wifi的错误解决方案,在一个开源操作系统中,这完全是荒谬的,而这个开源操作系统应该刚刚修复了最初的错误。这导致其他wifi管理器和命令行无法正常工作,人们被告知使用networkmanager,只是因为从来没有人愿意 修正真正的错误!

        4
  •  0
  •   Igor Lankin    16 年前

    您可以根据需要尝试打开连接。如果失败,则显示错误消息。 或者,如果你真的需要一个常规检查(例如,在应用程序启动时),你可以尝试向一个或多个无所不在的网站(如google.com)发出http请求。(或者你所说的“互联网”是什么协议)。

    退房 HttpWebRequest .