#c# #windows #windows-mobile #wifi #opennetcf
#c# #Windows #windows-mobile #Wi-Fi #opennetcf
Вопрос:
Я пытаюсь заставить приложение для Windows Mobile CE повторно подключиться к определенной сети с поддержкой WEP, если она станет доступной. Я полагаю, что этот код сканирует доступные в данный момент точки доступа, чтобы получить ссылку на нужную мне сеть:
// we have communicated with the server, so save the access point for future reference
INetworkInterface[] wniNet = NetworkInterface.GetAllNetworkInterfaces();
foreach (NetworkInterface wni in wniNet)
{
if (wni is WirelessNetworkInterface)
{
WirelessNetworkInterface wWireless = wni as WirelessNetworkInterface;
//if (mwniServerConnection == null)
if (string.IsNullOrEmpty(msAccessPointName))
{
MessageBox.Show("assigning: " wWireless.AssociatedAccessPoint.ToString() " to instance var.", "testing");
// first attempt to save the WEP enabled access point to the preferred networks
//WirelessZeroConfigNetworkInterface wWifiConnection = new WirelessZeroConfigNetworkInterface();
//wWifiConnection.AddPreferredNetwork(wWireless.AssociatedAccessPoint.ToString(),
// wWireless.InfrastructureMode,
// "9876543210",
// 1,
// wWireless.AuthenticationMode,
// WEPStatus.WEPEnabled,
// null);
mwniServerConnection = wWireless;
msAccessPointName = wWireless.AssociatedAccessPoint.ToString();
}
}
}
Я немного не в себе после того, как вчера нашел библиотеку OpenNETCF, я хотел бы спросить, есть ли какие-либо примеры кода, который может проверить, доступен ли сетевой ac, и подключиться, если это так.
Ответ №1:
Я обнаружил это с помощью адаптера.SetWirelessSettings повторно подключает портативное устройство к определенной точке доступа, найденной для обмена данными в конкретной сети, в которой работает мой сервер:
public static bool AttemptToReConnectAccessPoint()
{
bool wbRtn = false;
// attempt to connect to the proper network
if (U.mapAccessPoint != null)
{
// if we are currently on the right access point, we don't want to blow off the connection
if (CheckIfAccessPointIsCurrent()) return true;
foreach (OpenNETCF.Net.Adapter wAdapter in OpenNETCF.Net.Networking.GetAdapters())
{
bool wbFound = false;
foreach (OpenNETCF.Net.AccessPoint wAccessPoint in wAdapter.NearbyAccessPoints)
{
if (wAccessPoint.Name == U.mapAccessPoint.Name)
{
wbRtn = wAdapter.SetWirelessSettings(wAccessPoint.Name);
// give the re-connect script a second to finish
Thread.Sleep(1000);
Application.DoEvents();
break;
}
}
if (wbFound) break;
}
}
return wbRtn;
}
Комментарии:
1. Спасибо за код, когда я тестировал его, мне пришлось добавить wbRtn = wAdapter. SetWirelessSettings(wAccessPoint.Name ); wAdapter. RebindAdapter()
2. Спасибо, на самом деле я пока припарковал эту версию кода по другим причинам, но я обязательно добавлю это, когда вернусь к ней.