我的应用程序的目的是根据我连接的网络限制操作。我选择通过接入点的 mac 地址或 BSSID 来定义网络。我正在使用 WifiInto 的 getConnectionInfo() 和 getBSSID() 来获取接入点的 BSSID。

我的印象是 BSSID 对于接入点来说是唯一的。但是,在不同的设备上,我得到的 BSSID 略有不同(后 4 位数字不同,但前 8 位数字相同)。即使在同一设备中,在连接时,BSSID 也可能略有不同。

我的问题是,有没有办法可靠地唯一标识接入点?人们告诉我 MAC 地址是唯一的方法,但正如您在此处看到的,返回的 BSSID 略有不同。

最佳答案

在回答你的问题之前,我想先解释一下 BSSID、SSID 和接入点。
一个接入点可以宣布多个 SSID。因此,为了唯一地宣布 SSID,将使用单独的 BSSID。
多个接入点公布的 SSID 将由单独的 BSSID 公布(由每个接入点)。因此,如果您想查看有多少个接入点公布了该 SSID,您可以计算出您为同一 SSID 获得了多少个 BSSID。

双频(即 2.4 GHz 和 5 GHz)的接入点会为同一个 SSID 通告 2 个 BSSID;一个用于 2.4 GHz 频段,另一个用于 5 GHz 频段。

例如,如果您的网络中有 10 个双频接入点,并且每个接入点都公布相同的 SSID;您将总共有 20 个 BSSID 宣布相同的 SSID。
(虽然在一个地方不需要 10 个接入点,它们通常以只有 3 或 4 个能够相互监听的方式放置。因此,您不会在任何一个地方找到 20 个 BSSID,如上例所示)。

现在,回答您关于唯一标识接入点的问题。
BSSID 使用接入点的 MAC 地址创建,前 8 位数字与接入点的 MAC 相同,后 4 位数字是每个 BSSID 唯一的。
因此,通过查看 BSSID,您可以猜测唯一标识接入点。

关于Android:为同一个接入点获取不同的 bssid,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40139849/

10-10 20:17