2012-11-29 38 views
5

我試圖發現什麼樣的網絡連接,我連接。是WiFi還是3G? 是有辦法做到這一點使用C#贏形式的.NET 2.0或4.0嗎?有沒有辦法來檢測我正在使用什麼樣的連接? WiFi,3G還是以太網?

 foreach (NetworkInterface adapter in adapters) 
     { 
      if (adapter.OperationalStatus == OperationalStatus.Up) 
      { 
       if (adapter.NetworkInterfaceType == NetworkInterfaceType.Wireless80211) 
       { 
        lblNetworkType.Text = "you are using WiFi"; 
        break; 
       } 
       else if (adapter.NetworkInterfaceType == NetworkInterfaceType.Ppp) 
       { 
        lblNetworkType.Text = "you are using 3G or ADSL or Dialup"; 
        break; 
       } 
       else if (adapter.NetworkInterfaceType == NetworkInterfaceType.Ethernet) 
       { 
        lblNetworkType.Text = "you are using Ethernet"; 
        break; 
       } 
      } 
     } 
+0

我想你必須檢查枚舉[NetworkInterfaceType](http://msdn.microsoft.com/en-us/library/system.net.networkinformation.networkinterfacetype%28v=vs.100%29.aspx )當你做'NetworkInterface.GetAllNetworkInterfaces()' – V4Vendetta

+1

我做了,但是關於3G連接並不是很清楚。 – Arrabi

回答

3

不幸的是,沒有一個「簡潔」的方式來做到這一點。 3G連接看起來與ADSL或撥號連接相同(網絡類型爲PPP)。

如果您確定只能使用WiFi/3G,那麼您可以檢查GetAllNetworkInterfaces提供的NetworkInterface類中的信息,如果接口類型爲PPP,則將其視爲3G。但正如我所說,這與其他類型的調制解調器連接相同。

編輯:你可能有一些運氣尋找「3G」,在設備名稱或說明「HSPA」,「HSDPA」,「加密狗」。但這只是一個'體面的猜測',而不是絕對的確定。

+0

它可能是ADSL或撥號連接。什麼最好的方法來檢測。我認爲ADSL將「NetworkInterfaceType.AsymmetricDsl」 – Arrabi

+1

@Arrabi - 3G連接將顯示爲ADSL或撥號連接。你正在尋求檢測這個問題的方法,這是一個主觀問題,所以你試過了什麼,爲什麼你不滿意它? –

+0

@Ramhound,我更新了我的問題。很抱歉對於這個誤會。 – Arrabi

相關問題