【问题标题】:Programatically get list of devices connected to WiFi Hotspot hosted on a Windows IoT Core machine, RPI以编程方式获取连接到 Windows IoT Core 机器上托管的 WiFi 热点的设备列表,RPI
【发布时间】:2017-09-16 16:31:22
【问题描述】:

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

【问题讨论】:

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


    【解决方案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 事件。

    【讨论】:

    • 所以只有while循环ping才是解决方案?
    • @Rohan Sawant,我已经找到了上述解决方案,而不是循环ping。
    猜你喜欢
    • 1970-01-01
    • 2020-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-13
    • 2018-09-23
    • 1970-01-01
    相关资源
    最近更新 更多