android – 如何在相同的Ad-Hoc模式下获取附近手机的RSSI和Mac地址?

我已经将一些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地址?

非常感谢!!

解决方法:

我不确定我完全理解你的问题,但我认为你对WiFi有一点误解.

首先,RSSI代表“接收信号强度指示”,这意味着从接收器的角度来看信号的强度.在您的情况下,一部电话能够知道另一部电话的RSSI的唯一方法是,是否在更高(即应用)层传送有关RSSI的数据.

例如:

>电话A向电话B发送无线电消息XYZ.
>电话B可以在-75dBm处从电话A听到消息XYZ.
>然后,电话B可以向电话A发送消息,告诉电话A它正在-75dBm听到电话A.
>(电话A现在可以与电话B相同,使用从电话B接收的消息的RSSI)

其次,我并不完全了解ad-hoc网络如何处理BSSID等,但我很确定你将面临与上述RSSI类似的问题.即ad-hoc模式可能选择使用哪个BSSID来建立WiFi网络.这不必是任何设备的MAC地址(例如,它可以是伪MAC).如果您想将手机自己的MAC与另一部手机通信,则必须将其放在应用层的消息中,然后将其发送到另一部手机上的接收应用程序.

例如:

>电话A询问自己的操作系统/网络接口并找到自己的MAC地址(注意:它可以找到多个!)
>电话A将其放入应用程序消息(即您自己的UDP数据包)并将其发送到电话B.
>电话B接收消息,解压缩消息并找出MAC电话A告诉它的内容.

简而言之,答案是:在应用层收集和共享信息,你不能“嗅探/偷听”你从wifi堆栈中获取的信息.

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...