以编程方式获取连接到Windows IoT核心机器RPI上托管的WiFi Hotspot的设备列表

时间:2017-09-16 16:31:23

标签: raspberry-pi wifi windows-iot-core-10

我想与运行Windows IoT Core的RPI上托管的WiFi Hotspot以编程方式接口连接。我想出主机WiFi热点部分windows 10 iot raspberry pi 3 wifi hotspot,但现在我想得到连接到这个网络的设备列表。这可能吗?

1 个答案:

答案 0 :(得分: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的名称是您连接wifi热点的设备的MAC,您可以通过设置断点获取更多信息。当您断开连接时,WiFiDirectDevice将调用ConnectionStatusChanged事件。