我目前正在尝试通过Wi-Fi Direct连接两部知道对方MAC地址的手机,无意中发现以下问题:
mac地址,我从

    WifiManager wifiMan = (WifiManager) this
            .getSystemService(Context.WIFI_SERVICE);
    WifiInfo wifiInf = wifiMan.getConnectionInfo();
    MAC_ADDRESS = wifiInf.getMacAddress();

与我在发现和请求对等方时从WifiP2pManager收到的消息略有不同。示例:a0:xx:xx:...变成a2:xx:xx....
有人知道为什么吗?我没有找到任何方法来获取“Wi-Fi直接MAC地址”,正如我所认为的,MAC地址应该是唯一的,并且它是处理这两者的同一Wi-Fi模块(普通Wi-Fi和P2P/Direct)。这很奇怪…
我该怎么办?对于我拥有的两个设备(galaxy nexus),总是只有前两个字符在mac地址上有所不同——我应该简单地丢弃它们吗?遇到问题的概率(两个设备只在mac地址的第一部分不同)是否太高?
谢谢。

最佳答案

阅读维基百科上的MAC address
地址可以是通用管理地址,也可以是本地管理地址。
通过设置地址的最高有效字节的第二个最低有效位来区分通用管理地址和本地管理地址。此位也称为U/L位,通用/本地的缩写,用于标识如何管理地址。如果该位为0,则该地址是全局管理的。如果是1,则地址是本地管理的。
由于wi-fi direct只是mac上的另一个堆栈,您还应该检查这个位对它意味着什么。我发现有人在这上面撒了点光。显然下面的引用是来自wfa规范。
p2p设备应分配一个p2p接口地址,对应于
ieee 802.11-2007标准第7.1.3.3.1节所述格式,其中
用于与p2p组所有者或p2p内的客户端通信
小组。p2p接口地址不要求是全局唯一的,并且
可能是局部用药。p2p接口地址可以与
p2p设备地址提供了对p2p接口的要求。
满足本条款中的地址。
所以我认为这个问题的答案是,您不应该从WifiManager中获取mac地址并将其与Wi-Fi P2P连接一起使用。

关于android - Wi-Fi Direct和“普通”Wi-Fi - 不同的MAC?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10968951/

10-10 10:17