Android:为同一接入点获取不同的bssid

Android:为同一接入点获取不同的bssid,android,wifi,router,mac-address,bssid,Android,Wifi,Router,Mac Address,Bssid,我的应用程序的目的是根据我所连接的网络限制操作。我选择通过接入点的mac地址或BSSID来定义网络。我使用WifiInto的getConnectionInfo()和getBSSID()来获取访问点的BSSID 我的印象是,BSSID对于接入点来说是独一无二的。但是,在不同的设备上,我得到的BSSID略有不同(最后4位数字不同,但前8位相同)。即使在同一个设备上,在connect上,BSSID也可能有点不同 我的问题是,有没有一种方法可以可靠地唯一地标识接入点?人们告诉我MAC地址是唯一的方法,但

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

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


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

是的,BSSID是唯一的,但是对于单个ESSID,您可以在RF区域中有多个BSSID,即多个接入点宣布相同的SSID
因此,不同的客户端设备很可能会显示不同的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,您可以对唯一标识接入点进行一些猜测。

我想进一步询问,仅使用接收到的BSSID的前8位来假定接入点的标识是否省钱?也就是说,我想确保前8位数字不会在另一个网络中使用。我知道这些路由器的一些制造商有他们自己的mac地址签名。在大多数情况下是的。在OEM产品中,mac包含全球唯一的“组织标识符”,OEM通常确保mac或BSSID不会重叠。但这不是强制性的。因此,这可能是mac/bssid重叠的情况。此外,如果热点是使用“hostapd”(或类似程序)创建的,则bssid/mac重叠的可能性更高。谢谢。有没有办法使用BSSID获取公共标识符?另一个答案建议使用接收到的BSSID的前8个字符,但我不确定这是否足以保证网络之间的唯一性。