我已经将一些Android手机改为ad-hoc模式,让他们拥有相同的essid (通过在每部手机上使用命令:“iwconfig .. essid XXX”)。这样他们就可以了合并在一个ad-hoc网络中,可以在其中成功发送udp数据包。
接下来,我想在相同的ad-hoc网络中获取附近手机的RSSI和Mac地址。我尝试启动wpa_supplicant进程并通过扫描获取rssi(不是通过android系统,因此android API,如getRssi(), getScanResult()无法使用),但我只得到一个essid “XXX”代表这个adhoc网络(BSSID)和虚假Mac地址。
然后我尝试修改命令“iwlist”在android上重新编译它,我得到了相同的结果......我不知道这个现象是由linux系统还是无线驱动程序决定..
然后我尝试捕捉手机的信标包,我得到正确的mac和rssi,但是信标接收器处于moniter模式而不是ad-hoc模式,因此无法将udp数据包发送到附近的手机..
那么我该如何才能在同一个Ad-Hoc网络中获取每部手机的RSSI和Mac地址呢?
非常感谢!!
答案 0 :(得分:1)
我不确定我是否完全理解您的问题,但我认为您对WiFi有一点误解。
首先,RSSI代表"接收信号强度指示",这意味着来自接收机的信号强度。在您的情况下,一部电话能够知道另一部电话的RSSI的唯一方法是,是否有更高级别(即应用程序)层传送有关RSSI的数据。
例如:
其次,我并不完全了解ad-hoc网络如何处理BSSID等,但我相当确定你将面临与上述RSSI类似的问题。即ad-hoc模式可能选择使用哪个BSSID来建立WiFi网络。这不必是任何设备的MAC地址(例如,它可以是伪MAC)。如果您想将手机自己的MAC与另一部手机通信,则必须将其放在应用层的消息中,并将其发送到另一部手机上的接收应用程序。
例如:
简而言之,答案是:在应用层收集和分享信息,你不能嗤之以鼻/偷听"你从wifi堆栈中获取的信息。