Connect to a wireless network in C#
I'm using the Managed WiFi API and the example code:
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, m开发者_如何学编程ac, key);
wlanIface.SetProfile( Wlan.WlanProfileFlags.AllUser, profileXml, true );
wlanIface.Connect( Wlan.WlanConnectionMode.Profile, Wlan.Dot11BssType.Any, profileName );
I updated the code to use my SSID and key, but I don't know how should I get the MAC address.
The PhysicalAddress class should help you out. There is even a code sample in the MSDN article that extracts a MAC address from the network interfaces on the machine.
http://msdn.microsoft.com/en-us/library/system.net.networkinformation.physicaladdress.aspx
Hope this helps.
There is a great API SimpleWifi for C# and can be used as under:
string ssid = "abc wifi network";
AccessPoint selectedAP = null;
bool isApFound = false;
foreach (AccessPoint ap in accessPoints)
{
if (ap.Name.Equals(ssid, StringComparison.InvariantCultureIgnoreCase))
{
selectedAP = ap;
isApFound = true;
break;
}
}
if(!isApFound)
{
MessageBox.Show("SSID: " + ssid + " not found in range.");
return;
}
// Auth
AuthRequest authRequest = new AuthRequest(selectedAP);
bool overwrite = true;
if (authRequest.IsPasswordRequired)
{
if (selectedAP.HasProfile)
// If there already is a stored profile for the network, we can either use it or overwrite it with a new password.
{
var confirmResult = MessageBox.Show("A network profile already exist, do you want to use it ?", "Confirm Yes ?", MessageBoxButtons.YesNo);
if (confirmResult == DialogResult.Yes)
{
overwrite = false;
}
}
if (overwrite)
{
if (authRequest.IsUsernameRequired)
{
authRequest.Username = Microsoft.VisualBasic.Interaction.InputBox("Please enter Wifi username", "Wifi Username", "", -1, -1);
}
authRequest.Password = PasswordPrompt(selectedAP);
if (authRequest.IsDomainSupported)
{
authRequest.Domain = Microsoft.VisualBasic.Interaction.InputBox("Please enter Wifi domain", "Wifi Domain", "", -1, -1);
}
}
}
selectedAP.ConnectAsync(authRequest, overwrite, OnConnectedComplete);
精彩评论