Повторное подключение к определенной точке доступа с помощью OpenNETCF

#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. Спасибо, на самом деле я пока припарковал эту версию кода по другим причинам, но я обязательно добавлю это, когда вернусь к ней.