我想扫描从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命令可以完全枚举吗?
在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不一定会导致新的扫描,但可能会返回一个旧的(缓存的)访问点列表。 根据您的无线网卡/驱动程序,可能(不可能)执行新的扫描。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。