下面的代码是从网上下载的,具体从哪里下载的已经找不到链接了。
源文件:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using Windows.Devices.WiFi;
using Windows.Devices.WiFiDirect;
using Windows.Networking.Connectivity;
using Windows.Networking.NetworkOperators;
using Windows.Security.Credentials;
namespace Win10WiFi
{
/// <summary>
/// Windows10Wifi创建与连接
/// </summary>
public class WlanHostedNetworkHelper
{
private static string _ssid = "";
public static string SSID
{ get { return _ssid; } }
public static WiFiAdapter Adapter { get; set; }
#region 创建WIFI
static WiFiDirectAdvertisementPublisher _publisher;
static WiFiDirectConnectionListener _listener;
static NetworkOperatorTetheringManager _networkOperatorTetheringManager;
/// <summary>
/// 网络共享管理对象
/// </summary>
public static NetworkOperatorTetheringManager NetworkOperatorTetheringManager
{
get
{
if (_networkOperatorTetheringManager == null)
{
ConnectionProfile profile = NetworkInformation.GetConnectionProfiles().FirstOrDefault();
LogHelper.Default(new { Title = "NetworkOperatorTetheringManager", Data = profile });
if (profile != null)
_networkOperatorTetheringManager = NetworkOperatorTetheringManager.CreateFromConnectionProfile(profile);
}
return _networkOperatorTetheringManager;
}
}
/// <summary>
/// 监听WiFi链接
/// </summary>
private static WiFiDirectAdvertisementPublisher WiFiDirectPublisher
{
get
{
if (_publisher == null)
_publisher = new WiFiDirectAdvertisementPublisher();
return _publisher;
}
}
private static WiFiDirectConnectionListener WiFiDirectListener
{
get
{
if (_listener == null)
_listener = new WiFiDirectConnectionListener();
return _listener;
}
}
public static uint GetConnectedClients()
{
uint uiRet = 0;
if (NetworkOperatorTetheringManager != null) {
uiRet = NetworkOperatorTetheringManager.ClientCount;
}
return uiRet;
}
public static bool GetWifiState()
{
bool bRet = false;
if (NetworkOperatorTetheringManager != null)
{
if (NetworkOperatorTetheringManager.TetheringOperationalState == TetheringOperationalState.On)
{
bRet = true;
}
}
return bRet;
}
/// <summary>
/// 开起WiFi
/// </summary>
/// <param name="ssid"></param>
/// <param name="pass"></param>
/// <returns></returns>
public static bool StartWiFi(string ssid, string pass)
{
try
{
LogHelper.Default(new { Title = "StartWiFi", SSID = ssid, Pass = pass });
try
{
// This can raise an exception if the machine does not support WiFi. Sorry.
WiFiDirectListener.ConnectionRequested += OnConnectionRequested;
}
catch (Exception ex)
{
LogHelper.Default("StartWiFi Listener", ex);
return false;
}
StopWiFi();
WiFiDirectPublisher.Advertisement.ListenStateDiscoverability = WiFiDirectAdvertisementListenStateDiscoverability.Normal;
WiFiDirectPublisher.Advertisement.IsAutonomousGroupOwnerEnabled = true;
WiFiDirectPublisher.Advertisement.LegacySettings.IsEnabled = true;
WiFiDirectPublisher.Advertisement.LegacySettings.Ssid = ssid;
var creds = new Windows.Security.Credentials.PasswordCredential();
creds.Password = pass;
WiFiDirectPublisher.Advertisement.LegacySettings.Passphrase = creds;
WiFiDirectPublisher.Start();
_ssid = ssid;
return true;
}
catch (Exception ex)
{
LogHelper.Default("StartWiFi", ex);
return false;
}
}
/// <summary>
/// 开启共享网络
/// </summary>
/// <param name="ssid"></param>
/// <param name="pass"></param>
/// <returns></returns>
public async static Task<NetworkOperatorTetheringOperationResult> StartShareWiFiAsync(string ssid, string pass)
{
NetworkOperatorTetheringOperationResult result = null;
try
{
LogHelper.Default(new { Title = "StartWiFi", SSID = ssid, Pass = pass });
if (NetworkOperatorTetheringManager != null)
{
NetworkOperatorTetheringAccessPointConfiguration notapc = new NetworkOperatorTetheringAccessPointConfiguration();
notapc.Ssid = ssid;
notapc.Passphrase = pass;
await NetworkOperatorTetheringManager.ConfigureAccessPointAsync(notapc);
result = await NetworkOperatorTetheringManager.StartTetheringAsync();
_ssid = ssid;
}
else
LogHelper.Default(new { Title = "StartShareWiFi", Data = "未链接网络" });
}
catch (Exception ex)
{
LogHelper.Default("StartShareWiFi", ex);
}
return result;
}
/// <summary>
/// 关闭启动的WiFi
/// </summary>
/// <returns></returns>
public static bool StopWiFi()
{
try
{
_ssid = "";
if (WiFiDirectPublisher.Status == WiFiDirectAdvertisementPublisherStatus.Started)
WiFiDirectPublisher.Stop();
if (NetworkOperatorTetheringManager.TetheringOperationalState == TetheringOperationalState.On)
{
NetworkOperatorTetheringManager.StopTetheringAsync();
Thread.Sleep(2000);
}
while (NetworkOperatorTetheringManager.TetheringOperationalState == TetheringOperationalState.InTransition || NetworkOperatorTetheringManager.TetheringOperationalState == TetheringOperationalState.On)
{
if (NetworkOperatorTetheringManager.TetheringOperationalState == TetheringOperationalState.On)
{
NetworkOperatorTetheringManager.StopTetheringAsync();
Thread.Sleep(2000);
}
Thread.Sleep(500);
}
_networkOperatorTetheringManager = null;
return true;
}
catch (Exception ex)
{
LogHelper.Default("StopWiFi", ex);
return false;
}
}
/// <summary>
/// 外部设备链接WiFi监听事件
/// </summary>
/// <param name="sender"></param>
/// <param name="connectionEventArgs"></param>
private static void OnConnectionRequested(WiFiDirectConnectionListener sender, WiFiDirectConnectionRequestedEventArgs connectionEventArgs)
{
try
{
WiFiDirectConnectionRequest request = connectionEventArgs.GetConnectionRequest();
LogHelper.Default(new { Title = "OnConnectionRequested", Data = request.DeviceInformation.Name });
}
catch (Exception ex)
{
LogHelper.Default("OnConnectionRequested", ex);
}
}
#endregion
}
}