我想扫描从3 AP接收到的信号强度。 如果每300毫秒(最多500毫秒)发生一次,我会很高兴。 我在路由器上刷新了OpenWRT。
我正在寻找一个好的工具来做到这一点。 首先,我发现iwconfig工作,但只有我连接到networking。 所以我用iwList(我没有工作 – 也许我需要更新它?)。 你知道它的输出有多准确吗? 我可以相信吗?
之后,我遇到了IOCTL。 它看起来非常强大*和专业。 但是,从iWList / iw这个简单的方法获得WIFI信号强度的输出更可靠吗?
*由于我没有编译我使用它编写的任何程序,所以function甚至太强大了
在32位模式和64位 *** 作系统的64位模式下编译ioctl函数有什么不同?
我怎样才能在内核模式(windows)的IOCTL调用
x86_64 linux上定义的ioctl系统调用的用户空间包装器在哪里?
linux相当于I_PUSH
unlocked_ioctl vs正常的ioctl
SIOCETHTOol对SIocgMIIPHY对SIocgIFFLAGS
linux中的ioctl命令可以完全枚举吗?
在来自两个不同进程的相同文件描述符上调用ioctl
访问内核中用户空间结构的成员会给出错误的值
在C语言的linux中发出嘟嘟声
如果要确定未连接的WLAN接入点的信号强度,则扫描是正确的。
扫描是由无线网卡根据无线网卡的设计,通过驱动程序的“帮助”来完成的。 有卡(芯片组,更具体),有自己的处理器,并独立于主机运行自己的固件代码。 另一方面,在主计算机上的驱动程序完成大部分工作的地方有“愚蠢”的卡片。
在驱动程序和其他 *** 作系统之间,有一个接口(API),用于向驱动程序发送命令并以标准方式读取信息。 在linux中,至少有两种不同的API。 较旧的一个被命名为无线扩展 ,而较新的被命名为cfg80211 。 通常,驱动程序只支持其中一个API。 大多数当前驱动程序使用cfg80211,但可能会有旧的驱动程序仍然使用无线扩展。
对于这两个API中的每一个,都有一个用户空间工具(或一系列工具)来使用它。 对于无线扩展,有iwconfig (和iwList , iwpriv等)对于cfg80211,只有iw 。
所以,关于正确工具的问题取决于无线驱动程序使用的API。 为了增加混淆;-),cfg80211做了一些仿真,它允许你对使用更新的cfg80211 API的驱动程序执行一些无线扩展调用。
关于ioctl() :这是Unix *** 作系统中用户空间和内核空间之间通信的通用方法。 旧的无线扩展API使用ioctl() 。 较新的cfg80211 API不使用基于ioctl()的接口,而是使用nl80211 。
总结一下:是否使用iw / cfg80211 / nl80211或iwconfig /无线扩展/ ioctl取决于驱动程序或无线网卡。
关于你想要的扫描间隔 ,我会说300ms是相当短的。 这是因为对于有用的扫描,客户端需要短时间离开当前频道,切换到另一个频道,并听取来自该频道上其他接入点的信号。 由于离开其通道中断通信,这些通道外时间通常很短,并且很少进行。
分别调用iw <dev> scan或iwList <dev> scan不一定会导致新的扫描,但可能会返回一个旧的(缓存的)访问点列表。 根据您的无线网卡/驱动程序,可能(不可能)执行新的扫描。
总结以上是内存溢出为你收集整理的获取WIFI信号强度 – 寻求最佳方式(IOCTL,iwlist(iw)等)全部内容,希望文章能够帮你解决获取WIFI信号强度 – 寻求最佳方式(IOCTL,iwlist(iw)等)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)