获取WIFI信号强度 – 寻求最佳方式(IOCTL,iwlist(iw)等)

获取WIFI信号强度 – 寻求最佳方式(IOCTL,iwlist(iw)等),第1张

概述获取WIFI信号强度 – 寻求最佳方式(IOCTL,iwlist(iw)等)

我想扫描从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)等)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1274597.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存