关于及时刷新wifi列表

在项目中遇到一个疑惑,一台嵌入式设备的wifi模块,修改任意一个wifi站点的名字,
看wifi列表能不能及时刷新出新的wifi名,直接测的结果很正常,最多五秒就能刷新出
来。可是当telnet进去后,打开wpa_cli,每隔6秒才会收到一次
“CTRL-EVENT-SCAN-RESULTS”,且需要收到五次以上才能“scan_result”出新的wifi名,中途多次“scan”都不起作用,也就是最少30秒才能在wpa_cli下刷出新的wifi。

直接测的结果应该依赖于用wpa_cli测得的结果,可是为什么两者的结果却相反呢?
请大神们指点迷津,此外,这和wifi状态机有何关系,wifi状态机又是如何实现的呢?
能不能用通俗易懂的语言讲一下wifi状态机的原理,无论从哪方面回答,有帮助即可,
感激不尽

0

2个回答

更好我是搞wifi的,和你解释下原理
1. wifi 有个扫描间隔,目前设置是7s,在7s内重新设置扫描,命令是能够发送到kernel的,但是kernel有一个判断机制,7s内的重复扫描直接被return了,不会触发硬件去扫描
底层扫描wifi的原理是 scan 命令通过netlink发送时,先填充扫描信道,而扫描信道又和国家码有关系,需一一理清
2. 需要收到五次以上才能“scan__result”出新的wifi名,这个属于一个bug,在framework中收到CTRL-EVENT-SCAN-RESULTS是,就应该更新wifi列表的
3. 查看《深入理解Android:WiFi模块 NFC和GPS卷》
4. wpa_cli 的详细内容可以看开源的,可以下载查看,在wpa_cli中有命令不去依靠上层界面显示来获取wifi 连接列表

1
dai_zixuan
dai_zixuan 非常感谢,可我还有疑惑,(1)7s的间隔是哪里来的呢?(2)在我“scan__result”的时候,应用软件已经被我kill掉了,那么这个bug是属于底层的吗?(3)既然底层要刷新5次才能成功,为什么直接在应用层测却很快呢?而且每次都低于5秒,这和7S的扫描间隔是否又冲突了呢?
10 个月之前 回复
0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Android中实现Wifi列表的更新即wifi的连接与使用
1.Manifest.xm配置WiFi权限 <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" /><uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /><uses-permis...
Android常用控件之下拉刷新Wifi列表
有些列表信息需要手动去更新,此时比较常用的就是下拉刷新列表,在这里就使用下拉列表来刷新当前Wifi信息 目录结构 界面               关键代码 下拉列表类 package com.example.dropdownrefresh.ui; import java.text.SimpleDateFormat; import java.util.Date;
android app自动刷新wifi列表并检测指定设备(可手动添加或者长按列表项添加检测设备)
android app自动刷新wifi列表并检测指定设备(可手动添加或者长按列表项添加检测设备),这个app是自己写的,可用于检测wifi设备是否在线,外观美观简洁,绝对值这个分!
环信聊天列表不刷新数据
还原问题: 如图主Ui是activity,下侧的围观区是Fragment,根据环信的demo,上面聊天区可以正常刷新UI。 但是围观区数据源变化,但是不能刷新UI。思路: 研究一个下午,理了好久逻辑。发现我的问题是: chatActivity的事件监听(接收新消息),是通知activity的列表更新(上侧),但是没有通知围观区的列表更新。解决办法: 在监听事件中通知围观区更新数据下面附上我
刷新列表却找不到无线网络解决方法
无线网络连接已经连上,但是刷新列表却显示找不到无线网络,这是怎么回事呢?以下几点可能是出 现这种情况的原因,所以要一个一个来排查。 、必须要用Windows配置我的无线网络设置   1、“开始”->“运行”,输入“services.msc”然后点击“确定”,打开Windows的服务列表:   在服务列表中找到并双击Wireless Zero Configuration,
更新WiFi列表,查找指定SSID的WiFi
/** * 作者: * 时间:2018/04/11 * 功能:检测WiFi是否开启,刷新WiFi列表信息 */ private String SSID; private WifiManager mWifiManager;// 定义WifiManager对象 /* * 判断wifi是否打开 * */ public void isWifiOpen(){ mWifiManager=(WifiMan...
android开发-获取wifi列表
最近博主在学frangment框架,因此想着想着就想通过listfragment完成对wifi列表的获取。 好!现在就不说废话了。 一.wifi的基础知识 在Android的官方文档中定义了如下五种状态: WIFI_STATE_DISABLING  WIFI网卡正在关闭  0 WIFI_STATE_DISABLED   WIFI网卡不可用  1 WIFI_STATE_ENA
Android加载附近WiFi列表,并自动更新
Android获取 周围wifi列表,并根据信号强度实时更新
Qt显示笔记本wifi列表 windows
关于怎样设计你程序显示自己电脑的wifi列表的问题,微软已经提供相关api.这里也是参考网上的资源在这里用Qt实现。 首先用到的几个类:     PWLAN_INTERFACE_INFO_LIST         PWLAN_INTERFACE_INFO             PWLAN_AVAILABLE_NETWORK_LIST      PWLAN_AVAILABLE_NETWO
安卓——WIFI列表以及点击事件
一;点击事件 1;打开WIFI; 2;扫描wifi;及就是展示wifi列表 二;listView的展示 三;关于Listview的适配器 1;关于这个类 2:其中的getView方法 代码在下一个wifi连接博客中贴出
Android listview加载数据后没有立即刷新的解决办法
Android listview加载数据后没有立即刷新的解决办法
关于ListView列表刷新后列表重复问题
开发时从 列表activity A跳转到activity B进行添加操作添加完成后B finish()返回A在A中 通过onResume() 重新加载列表,发现列表居然重复了@Override protected void onResume() { super.onResume(); initview(); }原始列表和更新数据后的列表同时排列在眼前。。。。。有毒解决方法: 在in...
android刷新列表目录
android开发,项目目录,后续会更新相关项目android开发,项目目录,后续会更新相关项目android开发,项目目录,后续会更新相关项目
Android连续获取当前所连接WiFi及周围热点列表信息的解决方案
Android开发中wifi信息持续获取是比较基础的部分,为方便自己以后回顾,特此记下。
获取WIFI无线网络列表
本等程序可以扫描WIFI无线网络列表,连接无线网络,断开无线网络,刷新无线网络列表,显示SSID名称,WIFI信号,加密类型
Android WIFI 列表重复项问题
这两天在看WIFI扫描连接的问题,发现了几个坑: 1、getScanResult 没有结果 2、getConnectionInfo 结果不正确 3、getScanResult 结果有重复项 1、getScanResult 没有结果 这个问题是因为权限不够,要解决这个问题,不仅要WIFI相关的权限,还需要添加: android.Manifest.permission.ACCESS_COA...
Angular4中回调函数内数据绑定无法及时更新
解决办法:1. 导入 ChangeDetectorRef :import { ChangeDetectorRef } from '@angular/core'; constructor( private changeDetectorRef: ChangeDetectorRef ) { }2. 回调函数内,获得数据后:this.changeDetectorRef.markForCheck(); ...
无线网卡无法刷新网络列表
笔记本的无线网络已开,就是无法刷新网络列表解决方法: 在服务中找到 wireless zero configuration服务,然后启用,并设为自动!
TortoiseSVN刷新不及时的解决办法
时常会遇到  TortoiseSVN刷新不及时,主要是由于缓存造成的。 解决办法如下: 1.在SVN内的任一文件夹点击右键 “TortoiseSVN”->“Settings” 2.“Icon Overlays” 中“Stasus”改选“None”,然后“确定”
QT环境下实现对WiFi名称的的获取
qt实现对笔记本连接WiFi名称的获取(WiFi列表),同时可获取本机的IP地址
二、获取wifi列表并连接wifi
上一篇博客说到了Android打开WIFI的方式, 现在继续来说说如何获取wifi列表并连接wifi。一、获取wifi列表获取wifi列表需要用wifiManager.startScan();进行扫描,扫描结果的列表使用List<ScanResult> 保存扫描步骤:wifiManager.startScan(); //开启扫描scanResultList = wifiManager....
Win10下通过UWP刷新WIFI
Win10下通过UWP刷新WIFI,可以刷新WIFI、读取WIFI信息,链接WIFI
Android 6.0及以上版本,wifiManager.getScanResults()获取数据为空的最直接原因,及解决方法。
在网上所有了此问题,提示一致都是需要加入获取位置的权限(android.permission.ACCESS_FINE_LOCATION),这是6.0系统后加入的梗。 但由于本人有点傻,加了权限后仍旧不行,经过一轮失败后,原来是手机的“位置信息”权限并未打开。 直接解决问题的步骤: 1.加入权限: 2.将软件权限中的读取位置信息的权限打开(或动态添加权限,链接:https://blog.cs...
ajax实现及时刷新
最近在学习ajax的基础用法,写篇文章,总结一下 通过匹配数据库中的数据,及时验证账号能否注册 通过上面的登陆按钮,可以立即将数据加入数据库 下边的表格是实时读取数据库数据的展示,并实现了删除功能,实时操作数据库 以上是大致功能的介绍,都是通过ajax进行局部刷新后的展示,下面大概介绍一下实现方法 准备工作是搭建一个服务器,我用的是WA
Android中Sharedpreferences跨进程时数据刷新不及时
在最近想买中需要在service里面通过Sharedpreferences进行保存用户登录信息,访问模式设为了MODE_PRIVATE,结果在登录成功保存信息然后通知BroadcastReceiver时无法实时读取,每次当数据在Activity中改变时,在BroadcastReceiver中读取的都是上一次的值,而对应的XML文件中的数据已经改变了,并且只有手动清除应用程序的缓存后,才可以读取到修改
IE浏览器刷新后数据仍不刷新问题
问题描述: 1. 在网站中对数据进行更改操作后,刷新页面,数据仍是修改前的数据; 2. Bootstrap Table 的刷新方法$(‘#table’).bootstrapTable(‘refresh’)在IE浏览器中无效。 解决方法: 打开IE浏览器的设置; 找到Internet选项; 浏览历史记录下的“设置” 设置Internet临时文件下(之前设置的自动) ...
QT的刷新机制,有时会不刷新的bug解决办法
重写showEvent函数void showEvent(QShowEvent *e) {     this->setAttribute(Qt::WA_Mapped);     QWidget::showEvent(e); } 
网页数据的实时刷新
网页数据的实时刷新本来是打算在WEB页面上实现这样的功能:例如网页上有多个按钮,按钮1,按钮2,按钮3等按钮1的响应比较耗时,如何能够做到点击了按钮1之后,不用等待其响应,就可以再点击其他按钮,而按钮1响应结束之后会把结果刷出来?仔细一想,这是不可能的!这种要求对winform的程序而言非常简单,对web就难了。不等待按钮1的响应返回,只能是异步实现,开启线程或者BeginIn
ajax实时刷新数据
ajax实时刷新数据
解决ExpandableListView数据无法及时更新
前两天编写ExpandableListView时,想要更新列表里的数据时,发现使用adpter.notifyDataSetChanged无法对其进行数据的更新。 后来在网上检索了资料,说是要在adapter中加一个hanlder对其进行更新。试了下,发现还是不行,接着查资料,终于纠结了半天之后,看到有个人说试试先把数据clear之后,重新添加,一试。发现有效,终于解决这个问题。 主要代码在下面
Jquery 组件更新内容后如何刷新显示最新内容
1、Combobox or select dropdowns var myselect = $("#sCountry"); myselect[0].selectedIndex = 3; myselect.selectmenu('refresh'); or $( "select" ).selectmenu( "refresh", true ); 2、Listviews $('#mylist...
使用nohup进入后台,nohup.out内信息显示不及时
使用nohup进入后台,nohup.out内信息显示不及时 代码中使用printf打印的信息显示慢 因为标准输出stdout进入后台,启用了缓冲 可以在printf后使用fflush(stdout) 或者使用setbuf(stdout, NULL)关闭缓冲
vuejs视图不能及时更新的问题 ,深入响应式原理
vuejs 深入响应式原理 视图更新
Android更新页面上的数据的常见三种方法
i) handler.sendEmptyMessage(); ii) ThreadUtil.execute(new RunnableTask() { @Override Public void run(){} }); iii) runOnUiThread(new...
SVN版本控制图标经常延时显示或未显示问题解决方法
项目中,使用svn经常遇到,文件或文件夹图标延时显示或未显示的问题,终于找到办法解决
Android 查看周围wifi的ssid,并按信号强弱排序
原文地址:http://blog.csdn.net/yingpaixiaochuan/article/details/50069877 想要查看周围的wifi信息,需要用到WifiManager类 [java] view plain copy private WifiManager wifiManager; // 管理wifi     
WPF+SignalR实现用户列表实时刷新
在实时
[RK3288][Android6.0] WiFi之网络时间定期同步更新
Platform: Rockchip OS: Android 6.0 Kernel: 3.10.92前面有分析了网络时间同步过程,每次开机的时候会同步时间,现在有考虑到一个问题,当一直开机的时候,由于RTC的硬件可能偏移从而导致时间错误的可能,那么NetworkTimeUpdateService这一块有没有定期更新呢,事实上是有的,利用的是alarm和广播机制NetworkTimeUpdateS
photoshopCS3 不能即时刷新操作的解决方法
我的是photoshop CS3 extended 10.0 用着用着,就开始出现无法即时更新了,比如隐藏一个图层,要去点一下工作窗口,或者切换下界面,工作区才会把修改的结果刷新出来,有的朋友说是电脑卡,其实不是,解决方法如下: 首选项(Ctrl+K) -> 文字 把"显示亚洲字体选项"和"字体预览"设置为不勾选状态,再重启PS即可恢复正常。 这个应该是破解修改造成的,正版不会有这个问题
显示WiFi列表,刷新,添加图标,滚动条刷新之后停留在上一次滚动的位置
显示WiFi列表,刷新,添加图标,刷新之后滚动条停留在上一次滚动的位置。图标时自己瞎选的,只用更换一下你想要的图标就可以了~
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 关于大数据培训 关于云计算