我的应用程序的重点是根据我连接的网络限制操作。我选择通过接入点的 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/