2009-01-30 9 views
25

क्या .NET का उपयोग कर सभी वाईफाई एक्सेस पॉइंट्स और उनके संबंधित आरएसएसआई मानों तक पहुंचने का कोई तरीका है? यह वास्तव में अच्छा होगा अगर मैं इसे अप्रबंधित कोड का उपयोग किए बिना कर सकता हूं या बेहतर होगा यदि यह मोनो के साथ-साथ .NET में भी काम करता है।मैं उपलब्ध वाईफाई एपी और उनकी सिग्नल शक्ति को .NET में कैसे प्राप्त करूं?

यदि यह संभव है तो मैं कोड नमूना की सराहना करता हूं। धन्यवाद


यहाँ कुछ समान stackoverflow सवाल मैंने पाया हैं:

-Get SSID of the wireless network I am connected to with C# .Net on Windows Vista

-Managing wireless network connection in C#

- Get BSSID (MAC address) of wireless access point from C#

उत्तर

17

यह ग # में प्रबंधित कोड के साथ एक आवरण परियोजना है http://www.codeplex.com/managedwifi

पर यह Windows Vista और XP SP2 (या बाद के संस्करण) का समर्थन करता है।

नमूना कोड:

using NativeWifi; 
using System; 
using System.Text; 

namespace WifiExample 
{ 
    class Program 
    { 
     /// <summary> 
     /// Converts a 802.11 SSID to a string. 
     /// </summary> 
     static string GetStringForSSID(Wlan.Dot11Ssid ssid) 
     { 
      return Encoding.ASCII.GetString(ssid.SSID, 0, (int) ssid.SSIDLength); 
     } 

     static void Main(string[] args) 
     { 
      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) 
       { 
        if (network.dot11DefaultCipherAlgorithm == Wlan.Dot11CipherAlgorithm.WEP) 
        { 
         Console.WriteLine("Found WEP network with SSID {0}.", GetStringForSSID(network.dot11Ssid)); 
        } 
       } 

       // Retrieves XML configurations of existing profiles. 
       // This can assist you in constructing your own XML configuration 
       // (that is, it will give you an example to follow). 
       foreach (Wlan.WlanProfileInfo profileInfo in wlanIface.GetProfiles()) 
       { 
        string name = profileInfo.profileName; // this is typically the network's SSID 

        string xml = wlanIface.GetProfileXml(profileInfo.profileName); 
       } 

       // Connects to a known network with WEP security 
       string profileName = "Cheesecake"; // this is also the SSID 
       string mac = "52544131303235572D454137443638"; 
       string key = "hello"; 
       string profileXml = string.Format("<?xml version=\"1.0\"?><WLANProfile xmlns=\"http://www.microsoft.com/networking/WLAN/profile/v1\"><name>{0}</name><SSIDConfig><SSID><hex>{1}</hex><name>{0}</name></SSID></SSIDConfig><connectionType>ESS</connectionType><MSM><security><authEncryption><authentication>open</authentication><encryption>WEP</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); 

       wlanIface.SetProfile(Wlan.WlanProfileFlags.AllUser, profileXml, true); 
       wlanIface.Connect(Wlan.WlanConnectionMode.Profile, Wlan.Dot11BssType.Any, profileName); 
      } 
     } 
    } 
} 
+0

इसके लिए धन्यवाद। लेकिन यह मेरे लिए काम नहीं कर रहा है। मैं विंडोज 8.1 का उपयोग कर रहा हूं और मुझे यह अपवाद मिल रहा है "सिस्टम का एक अनचाहे अपवाद 'System.ComponentModel.Win32Exception' प्रबंधित Wifi में हुआ। डीएल "। कोई विचार? –

+0

मुझे भी मेरी मशीनों में से एक में थियिस त्रुटि मिल रही है, हालांकि मैं इसे विंडोज 10 और वीएस 2015 पर चला रहा हूं। कोई संकेत? क्या आप इसे हल करने में सक्षम थे? – Apoorv

0

आप इसे प्राप्त करने में सक्षम हो सकता डब्ल्यूएमआई प्रश्नों का उपयोग करना। इस thread पर एक नज़र डालें।

0

यदि आप विस्टा wmi का उपयोग कर रहे हैं तो सभी नेटवर्क एडेप्टर के साथ काम नहीं करते हैं, विस्टा के लिए एक और विकल्प नेटस् कमांड का उपयोग करना है। this codeproject article.

+1

thx। नेटशे के साथ समस्या यह है कि यह मुझे मुझे आवश्यक सभी जानकारी नहीं देता है (आरएसएसआई) और कभी-कभी – LDomagala

3

सभी विस्टा और एक्सपी एसपी 3 सिस्टम पर मौजूद मूल वाईफाई एपीआई का उपयोग करें। एक्सपी एसपी 2 में एक अलग एपीआई है जिसके साथ आप एक ही काम कर सकते हैं।

How to enumerate networks

How to get signal strength

+0

सिग्नल शक्ति का उपयोग विंडोज एक्सपी में नहीं किया जा सकता है। प्रत्येक एसपी के साथ भी नहीं :( – LDomagala

-2

मैं एक और तरीका यह करने के लिए मिल गया है, हालांकि यह कुछ पैसे खर्च आता है।

rawether.net पर एक .NET lib उपलब्ध है जो आपको ईथरनेट ड्राइवरों पर जाने देता है। लिंक के लिए

संबंधित मुद्दे