2011-12-21 137 views
3
在C#

LAN连接的名单,我想在运行时我的笔记本电脑的有线LAN连接的名单,但我不希望任何WiFi或无线LAN。如何让有线LAN连接的忽略Wifi(无线),在C#

我已经用各种方式来获得网络列表: -

ManagementClass

ManagementClass objMC = new ManagementClass("Win32_NetworkAdapterConfiguration"); 
ManagementObjectCollection objMOC = objMC.GetInstances(); 

foreach (ManagementObject objMO in objMOC) 
     { 
      if (!(bool)objMO["ipEnabled"]) 
       continue; 
      this.textBox1.Text += (Convert.ToString(objMO["Description"])) + Environment.NewLine; 
     } 

上面的代码没有给出关于网络的类型(无线或有线)信息

NetworkInterface类:

foreach (NetworkInterface nic in NetworkInterface.GetAllNetworkInterfaces()) 

     { 
      this.textBox1.Text += nic.Name.ToString();  

      this.textBox1.Text += "MAC: " + nic.GetPhysicalAddress().ToString(); 

      this.textBox1.Text += "Type: " + nic.NetworkInterfaceType; 
      this.textBox1.Text += "Description: " + nic.Description.ToString(); 
      this.textBox1.Text += "OperationalStatus: " + nic.OperationalStatus.ToString() + ; 
     } 

上面的代码给了我清单以太网LAN描述。 甚至NetworkInterfaceType用于WiFi LAN被示出作为Ehternet,例如: 类型:以太网 描述:英特尔(R)迅驰(R)极限-N 6300 AGN - 数据包调度程序微型端口

我的意思是有没有办法区分哪一个是无线或有线网络。

我也试过NativeWifi.WlanClient,但它崩溃了。

Wlan.WlanAvailableNetwork[] networks = wlanIface.GetAvailableNetworkList(0); 
     foreach (Wlan.WlanAvailableNetwork network in networks) 
     { 
      if (network.dot11DefaultCipherAlgorithm == Wlan.Dot11CipherAlgorithm.WEP) 
      { 
       this.textBox1.Text = string.Format("Found WEP network with SSID {0}: ", GetStringForSSID(network.dot11Ssid)) + Environment.NewLine; 
      } 
     } 

任何指导将不胜感激。 谢谢

+0

在ASP.NET中可能吗?如何获得客户端可用的WiFi网络? – Ranjith 2017-08-31 08:18:45

回答

3
NetworkInterface[] nics=NetworkInterface.GetAllNetworkInterfaces(); 

foreach(NetworkInterface adapter in nics) 
{ 
    if(adapter.OperationalStatus==OperationalStatus.Up) 
    { 
    if(adapter.NetworkInterfaceType==NetworkInterfaceType.Wireless80211) 
    { 
     Console.WriteLine("Wifi"); 
    } 
    else 
    { 
     Console.WriteLine("do your work"); 
    } 
    } 
}