Программно получить список устройств, подключенных к точке доступа Wi-Fi, размещенной на компьютере Windows IoT Core, RPI

Я хотел бы взаимодействовать с программным интерфейсом с точкой доступа Wi-Fi, размещенной на моем RPI под управлением Windows IoT Core. Я выяснил, что размещает часть точки доступа Wi-Fi, windows 10 iot raspberry pi 3 wifi точка доступа, но теперь я хотел бы получить список устройств, подключенных к этой сети. Это возможно?


person Rohan Sawant    schedule 16.09.2017    source источник


Ответы (1)


Вы можете использовать WiFiDirectConnectionListener для достижения этой цели. . Когда другие устройства подключаются к хост-устройству через Wifi SoftAP, WiFiDirectConnectionListener перехватывает запрос на подключение.

    private Dictionary<string,DeviceInformation> connectionDeviceList = new Dictionary<string, DeviceInformation>();

    WiFiDirectConnectionListener wifiAPListener = new WiFiDirectConnectionListener();
    wifiAPListener.ConnectionRequested += WifiAPListener_ConnectionRequested;

    private void WifiAPListener_ConnectionRequested(WiFiDirectConnectionListener sender, WiFiDirectConnectionRequestedEventArgs args)
    {
        try
        {
            var request = args.GetConnectionRequest();
            var devInfo = request.DeviceInformation;

            var wfdDevice = await WiFiDirectDevice.FromIdAsync(devInfo.Id);
            wfdDevice.ConnectionStatusChanged += WfdDevice_ConnectionStatusChanged;

            if (!connectionDeviceList.ContainsKey(devInfo.Id))
            {
                connectionDeviceList.Add(devInfo.Id, devInfo);
            }
        }
        catch(Exception ex)
        {
            Debug.Write(ex.StackTrace);
        }           
    }

    private void WfdDevice_ConnectionStatusChanged(WiFiDirectDevice sender, object args)
    {
        try
        {
            if (sender.ConnectionStatus == WiFiDirectConnectionStatus.Disconnected)
            {
                if (connectionDeviceList.ContainsKey(sender.DeviceId))
                {
                    connectionDeviceList.Remove(sender.DeviceId);
                }
            }
        }
        catch(Exception ex)
        {
            Debug.Write(ex.StackTrace);
        }
    }

Имя DeviceInformation — это MAC-адрес устройства, к которому вы подключаете точку доступа Wi-Fi, вы можете получить дополнительную информацию, установив точку останова. Когда вы разрываете соединение, WiFiDirectDevice вызывает событие ConnectionStatusChanged.

person Michael Xu - MSFT    schedule 18.09.2017
comment
Так что только во время циклического пинга это решение? - person Rohan Sawant; 18.09.2017
comment
@Rohan Sawant, я нашел решение, как указано выше, а не с циклическим пингом. - person Michael Xu - MSFT; 28.09.2017