2009-11-17 61 views

回答

0

你可以嘗試打開你的連接,因爲它是必要的。如果失敗則顯示錯誤消息。 或者,如果您確實需要進行一般性檢查(例如在應用程序啓動時),則可以嘗試向一個或多個無所不在的網站(如google.com)發出HTTP請求。 (或者什麼協議你的意思是「互聯網」)。

結帳HttpWebRequest

+0

我需要在Windows類似的InternetGetConnectedState API東西 – 2009-11-17 13:09:18

+0

的HttpWebRequest有時防火牆 – 2009-11-17 13:11:05

2

如果是桌面應用程序,則可以使用NDesk.DBus庫在d-bus上查詢NetworkManager(這是大多數Linux桌面上的網絡連接管理器)。

見女妖爲例:http://git.gnome.org/cgit/banshee/tree/src/Core/Banshee.Services/Banshee.Networking/NetworkManager.cs

+0

其實受阻,最該目錄中的文件都可能是你的興趣:http://git.gnome.org/cgit/banshee /tree/src/Core/Banshee.Services/Banshee.Networking/例如,Wicd是另一個相當常見的網絡管理員,也可以通過dbus訪問。 – 2009-11-17 20:16:50

1

除了邁克爾·已經提出了一個桌面應用程序,你也可以這樣做:

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 
     // ... 
} 
1

無論你最終使用,它贏得不可靠。

我總是用Windows Vista和7在家中看到它。我使用家庭網絡,所以我的電腦總是「連接」。但是,它們並不總是連接到互聯網。

這就是說,我會建議像Gonzalo說的那樣檢查網絡接口。這是你最好的選擇。

我不會依賴NetworkManager。我討厭那件事,只要我可以把它關掉。它很笨重,不好看,有一個醜陋的名字,依靠像HAL和DBUS這樣的垃圾。早期版本會永久性地讓我失望,因爲除非您登錄到GUI,否則它們無法正常工作。它還收集了在開源操作系統中完全荒謬的wifi錯誤解決方案,該系統應該修復原來的錯誤。這導致其他wifi管理員和命令行無法正常工作,並且人們被告知使用NetworkManager,只是因爲沒有人打擾到修復了實際的錯誤!