使用mono检查linux中的互联网连接?

时间:2009-11-17 05:41:42

标签: c# linux mono

有没有办法用linux检查linux中的互联网连接状态

4 个答案:

答案 0 :(得分:2)

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

请参阅Banshee的示例:http://git.gnome.org/cgit/banshee/tree/src/Core/Banshee.Services/Banshee.Networking/NetworkManager.cs

答案 1 :(得分:1)

除了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
       // ...
}

答案 2 :(得分:1)

无论你最终使用什么,它都不可靠。

我总是在家中看到Windows Vista和7。我使用家庭网络,所以我的电脑总是“连接”。但是,它们并不总是连接到Internet。

那就是说,我建议按照Gonzalo的说法检查网络接口。这是你最好的选择。

我不会依赖NetworkManager存在。我讨厌那件事,随时把它关掉。这是一个巨大的,笨拙的,有一个丑陋的名字,依赖于像HAL和DBUS这样的垃圾。早期版本永久性地让我失望,因为除非您登录到GUI,否则它们不起作用。它还收集了wifi的bug解决方案,这在开源操作系统中完全是荒谬的,应该只修复原始的bug。这导致其他wifi管理员和命令行无法正常工作,人们被告知使用NetworkManager,只是因为没有人费心去修复实际的错误!

答案 3 :(得分:0)

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

查看HttpWebRequest