标题:求解! C#编程使用Managed Wifi API连接无线SSID 如何显示出来怎么遍历出 ...
只看楼主
huzhiv119
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2015-7-8
 问题点数:0 回复次数:0 
求解! C#编程使用Managed Wifi API连接无线SSID 如何显示出来怎么遍历出来
using System;
using System.Collections.Generic;
using System.Text;
using NativeWifi;
  
  
namespace ManagedWifiExample
{
    class MyWifi
    {
        public List<WIFISSID> ssids = new List<WIFISSID>();
  
        public MyWifi()
        {
            ssids.Clear();
        }
  
  
        static string GetStringForSSID(Wlan.Dot11Ssid ssid)
        {
            return Encoding.UTF8.GetString(ssid.SSID, 0, (int)ssid.SSIDLength);
        }
  
        /// <summary>
        /// 枚举所有无线设备接收到的SSID
        /// </summary>
        public void ScanSSID()
        {
            WlanClient client = new WlanClient();
            foreach (WlanClient.WlanInterface wlanIface in client.Interfaces)
            {
                // Lists all networks with WEP security
                Wlan.WlanAvailableNetwork[] networks = wlanIface.GetAvailableNetworkList(0);
                foreach (Wlan.WlanAvailableNetwork network in networks)
                {
                    WIFISSID targetSSID = new WIFISSID();
  
                    targetSSID.wlanInterface = wlanIface;
                    targetSSID.wlanSignalQuality = (int)network.wlanSignalQuality;
                    targetSSID.SSID = GetStringForSSID(network.dot11Ssid);
                    //targetSSID.SSID = Encoding.Default.GetString(network.dot11Ssid.SSID, 0, (int)network.dot11Ssid.SSIDLength);
                    targetSSID.dot11DefaultAuthAlgorithm = network.dot11DefaultAuthAlgorithm.ToString();
                    targetSSID.dot11DefaultCipherAlgorithm = network.dot11DefaultCipherAlgorithm.ToString();
                    ssids.Add(targetSSID);
  
                    //if ( network.dot11DefaultCipherAlgorithm == Wlan.Dot11CipherAlgorithm.WEP )
                    //{
                    //    Console.WriteLine( "Found WEP network with SSID {0}.", GetStringForSSID(network.dot11Ssid));
                    //}
                    //Console.WriteLine("Found network with SSID {0}.", GetStringForSSID(network.dot11Ssid));
                    //Console.WriteLine("dot11BssType:{0}.", network.dot11BssType.ToString());
                    //Console.WriteLine("dot11DefaultAuthAlgorithm:{0}.", network.dot11DefaultAuthAlgorithm.ToString());
                    //Console.WriteLine("dot11DefaultCipherAlgorithm:{0}.", network.dot11DefaultCipherAlgorithm.ToString());
                    //Console.WriteLine("dot11Ssid:{0}.", network.dot11Ssid.ToString());
  
                    //Console.WriteLine("flags:{0}.", network.flags.ToString());
                    //Console.WriteLine("morePhyTypes:{0}.", network.morePhyTypes.ToString());
                    //Console.WriteLine("networkConnectable:{0}.", ());
                    //Console.WriteLine("numberOfBssids:{0}.", network.numberOfBssids.ToString());
                    //Console.WriteLine("profileName:{0}.", network.profileName.ToString());
                    //Console.WriteLine("wlanNotConnectableReason:{0}.", network.wlanNotConnectableReason.ToString());
                    //Console.WriteLine("wlanSignalQuality:{0}.", network.wlanSignalQuality.ToString());
                    //Console.WriteLine("-----------------------------------");
                    // Console.WriteLine(network.ToString());
                }
            }
        } // EnumSSID
  
  
        /// <summary>
        /// 连接到未加密的SSID
        /// </summary>
        /// <param name="ssid"></param>
        public void ConnectToSSID(WIFISSID ssid)
        {
            // Connects to a known network with WEP security
            string profileName = ssid.SSID; // this is also the SSID
  
            string mac = StringToHex(profileName); //
  
            //string key = "";
            //string profileXml = string.Format("<?xml version=\"1.0\"?><WLANProfile xmlns=\"http://www.\"><name>{0}</name><SSIDConfig><SSID><hex>{1}</hex><name>New{0}</name></SSID></SSIDConfig><connectionType>ESS</connectionType><MSM><security><authEncryption><authentication>open</authentication><encryption>none</encryption><useOneX>false</useOneX></authEncryption><sharedKey><keyType>networkKey</keyType><protected>false</protected><keyMaterial>{2}</keyMaterial></sharedKey><keyIndex>0</keyIndex></security></MSM></WLANProfile>", profileName, mac, key);
            //string profileXml2 = "<?xml version=\"1.0\"?><WLANProfile xmlns=\"http://www.\"><name>Hacker SSID</name><SSIDConfig><SSID><hex>54502D4C494E4B5F506F636B657441505F433844323632</hex><name>TP-LINK_PocketAP_C8D262</name></SSID>        </SSIDConfig>        <connectionType>ESS</connectionType><connectionMode>manual</connectionMode><MSM> <security><authEncryption><authentication>open</authentication><encryption>none</encryption><useOneX>false</useOneX></authEncryption></security></MSM></WLANProfile>";
            //wlanIface.SetProfile( Wlan.WlanProfileFlags.AllUser, profileXml2, true );
            //wlanIface.Connect( Wlan.WlanConnectionMode.Profile, Wlan.Dot11BssType.Any, profileName );
            string myProfileXML = string.Format("<?xml version=\"1.0\"?><WLANProfile xmlns=\"http://www.\"><name>{0}</name><SSIDConfig><SSID><hex>{1}</hex><name>{0}</name></SSID></SSIDConfig><connectionType>ESS</connectionType><connectionMode>manual</connectionMode><MSM><security><authEncryption><authentication>open</authentication><encryption>none</encryption><useOneX>false</useOneX></authEncryption></security></MSM></WLANProfile>", profileName, mac);
            ssid.wlanInterface.SetProfile(Wlan.WlanProfileFlags.AllUser, myProfileXML, true);
            ssid.wlanInterface.Connect(Wlan.WlanConnectionMode.Profile, Wlan.Dot11BssType.Any, profileName);
            //Console.ReadKey();
        }
  
        /// <summary>
        /// 字符串转Hex
        /// </summary>
        /// <param name="str"></param>
        /// <returns></returns>
        public static string StringToHex(string str)
        {
            StringBuilder sb = new StringBuilder();
            byte[] byStr = System.Text.Encoding.Default.GetBytes(str); //默认是System.Text.Encoding.Default.GetBytes(str)
            for (int i = 0; i < byStr.Length; i++)
            {
                sb.Append(Convert.ToString(byStr[i], 16));
            }
  
            return (sb.ToString().ToUpper());
        }
    }
  
    class WIFISSID
    {
        public string SSID = "NONE";
        public string dot11DefaultAuthAlgorithm = "";
        public string dot11DefaultCipherAlgorithm = "";
        public bool networkConnectable = true;
        public string wlanNotConnectableReason = "";
        public int wlanSignalQuality = 0;
        public WlanClient.WlanInterface wlanInterface = null;
    }
  
}
C#获取SSID我找了很多只有这一个找出来了,但是怎么把它显示出来,怎么遍历出来。求解?
搜索更多相关主题的帖子: public return 如何 无线 
2015-07-08 15:33



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-455214-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.199506 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved