2009-06-29 46 views
0

重複的C# - How do I check for a network connectionC#檢查活性調制解調器連接

您好,2008

VS SP1

我使用下面的代碼來測試使用用戶是否連接無線或局域網連接。即電纜插入,或無線關閉。代碼工作正常。然而,如果你能發現任何潛在的問題或者你知道更好的方法,我會有興趣瞭解更多。

但是,客戶希望我們檢查用戶是否使用調制解調器連接。正如您從我的源代碼中所看到的,我正在尋找以「本地連接」或「無線網絡連接」開始的連接。還行吧。

但是,問題是調制解調器名稱可能是任何東西,因爲當用戶使用'新連接嚮導'設置他們的調制解調器連接時,他們可以調用這個任何東西。所以如果我的switch語句我不知道要找什麼。

任何建議將是最有益的,

// Checks if Network is either connected by LAN or Wireless 
     public bool IsNetworkConnected() 
     { 
      NetworkInterface[] networkCards = NetworkInterface.GetAllNetworkInterfaces(); 
      bool connected = false; 

      // Loop through to find the one we want to check for connectivity. 
      // Connection can have different numbers appended so check that the 
      // network connections start with the conditions checked below. 
      foreach (NetworkInterface nc in networkCards) 
      { 
       // Check LAN 
       if (nc.Name.StartsWith("Local Area Connection")) 
       { 
        if (nc.OperationalStatus == OperationalStatus.Up) 
        { 
         connected = true; 
        } 
       } 

       // Check for Wireless 
       if (nc.Name.StartsWith("Wireless Network Connection")) 
       { 
        if (nc.OperationalStatus == OperationalStatus.Up) 
        { 
         connected = true; 
        } 
       } 
      } 

      return connected; 
     } 
+0

可能重複[C# - 如何檢查網絡連接](http://stackoverflow.com/questions/520347/c-how-do-i-check-for-a-network-connection) – Espo 2011-03-03 10:40:07

回答

1

你不能使用這裏描述的技術:C# - How do I check for a network connection

System.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable() 

要監控的IP地址或網絡的變化而變化可用性使用NetworkChange類中的事件:

System.Net.NetworkInformation.NetworkChange.NetworkAvailabilityChanged 
System.Net.NetworkInformation.NetworkChange.NetworkAddressChanged 
+0

Lol。複製你自己以前的答案 - 這有點厚顏無恥。 :) – Noldorin 2009-06-29 10:58:44

1

GetIsNetworkAvailable值應該告訴你,正是你需要的。 MSDN上

說明:

表示任何網絡連接是否可用。
...
如果任何網絡接口標記爲「up」且不是回送或通道接口,則認爲網絡連接可用。

這意味着你可以簡單地把它作爲:

var connected = NetworkInterface.GetIsNetworkAvailable();