当前位置: 首页 > news >正文

网站制作哪些设计服务

网站制作哪些,设计服务,高端网站建设有哪些,南通网站建设方法wifi 连接&获取IP 流程图 代码流程分析 一、关联阶段 1. WifiSettings.submit – > WifiManager WifiSettings 干的事情比较简单,当在dialog完成ssid 以及密码填充后,直接call WifiManager save 即可WifiManager 收到Save 之后,就开…

wifi 连接&获取IP 流程图

代码流程分析

一、关联阶段

1. WifiSettings.submit – > WifiManager

  • WifiSettings 干的事情比较简单,当在dialog完成ssid 以及密码填充后,直接call WifiManager save 即可
  • WifiManager 收到Save 之后,就开始了wifi 连接之旅
packages/apps/Settings/src/com/android/settings/wifi/WifiSettings.java
void submit(WifiConfigController configController){... mWifiManager.save(config, mSaveListener);
}

2. WifiSettings.submit – > WifiManager

  • WifiManager 这里相当于传达室,信件到了,然后按个铃铛,把信息传达给WifiSerivceImpl
  • 主要是将SAVE_NETWORK 给到 WifiService(WifiServiceImpl 是真正干活的)
frameworks/base/wifi/java/android/net/wifi/WifiManager.java
public void save(WifiConfiguration config, ActionListener listener) {getChannel().sendMessage(SAVE_NETWORK, 0, putListener(listener), config);
}

3. WifiServiceImpl --> WifiStateMachine

  • WifiServiceImpl又将 SAVE_NETWORK 送到中级cmd处理站: WifiStateMachine
  • 这里扩展一下,如我们的移除热点(其实也通过Settings 将remove cmd 送到WifiServieImpl进行下一步传输)
frameworks/opt/net/wifi/service/java/com/android/server/wifi/WifiServiceImpl.java
private class ClientHandler extends WifiHandler {case WifiManager.SAVE_NETWORK:{mWifiStateMachine.sendMessage(Message.obtain(msg));
}
}

4. WifiStateMachine–> WifiStateMachine

  • 从save network 连接热点
  • 又一次转化, 转为CMD_START_CONNECT送到内部状态机(ConnectModeState )处理
  • 送到WifiNative 进行处理Connect,回顾以上(Android 基本套路大框架还是不变的: apps – services – native – drv(kernel))
frameworks/opt/net/wifi/service/java/com/android/server/wifi/WifiStateMachine.java
public void startConnectToNetwork(int networkId, int uid, String bssid) {sendMessage(CMD_START_CONNECT, networkId, uid, bssid);
}class ConnectModeState extends State {case WifiManager.SAVE_NETWORK:startConnectToNetwork(netId, message.sendingUid, SUPPLICANT_BSSID_ANY);// 连接热点case CMD_START_CONNECT:mWifiNative.connectToNetwork(mInterfaceName, config); // 转到wifiNative 进行connect 
}

5. WifiNative–> SupplicantStaIfaceHal --> WifMonitor

  • SupplicantStaIfaceHal 添加网络,select (实则将connect 传给到 wpa_supplicant)
  • wpa_supplicant完成一系列与路由器的之间的beacon帧(probe、assoc、4way-handshake 、group-handshake)后,再能取到路由器的颁发的认可证(既是拿到最后的compelted)
  • 最后,通过wifiMonitor上报wpa_supplicant 任务已完成,既是完成连接的第一阶段(关联阶段)
  • WiFiMonitor上报的事件既是,NETWORK_CONNECTION_EVENT (又一次回到WifiStateMachine)
frameworks/opt/net/wifi/service/java/com/android/server/wifi/SupplicantStaIfaceHal.javapublic boolean connectToNetwork(@NonNull String ifaceName, @NonNull WifiConfiguration config)
{Pair<SupplicantStaNetworkHal, WifiConfiguration> pair =addNetworkAndSaveConfig(ifaceName, config);networkHandle.select(); 
}public void onStateChanged(int newState, byte[/* 6 */] bssid, int id,ArrayList<Byte> ssid) {if (newSupplicantState == SupplicantState.COMPLETED){mWifiMonitor.broadcastNetworkConnectionEvent(mIfaceName, getCurrentNetworkId(mIfaceName), bssidStr);}
}

二、获取IP 阶段

6. WifMonitor --> WifiStateMachine

  • 由5的NETWORK_CONNECTION_EVENT 事件上报,又一次回到了WifiStateMachine
  • 而且还是在ConnectModeState 状态机里,为啥?(又回到这里)
  • 因为,1~5步只完成了关联,还有最后一步(要获取IP),拿到IP后才能算是一个有证的男人,
  • 革命尚未成功,苦逼仍要继续(且看下面是如何获取IP …)
  • 先是,广而告知(已取得真经),然后立马切换到mObtainingIpState状态机
frameworks/opt/net/wifi/service/java/com/android/server/wifi/WifiStateMachine.java
class ConnectModeState extends State {case WifiMonitor.NETWORK_CONNECTION_EVENT:.... sendNetworkStateChangeBroadcast(mLastBssid);transitionTo(mObtainingIpState);
}

7. WifiStateMachine.ObtainingIpState

  • ObtainingIpState 获取IP 的流程中规中矩,先是update 系统的State
  • 停掉IpClient (自从Android N 后,获取IP已废弃了dhcpd,扶持了另一位的IpClient 、IpManager来完成自己的事业 )
  • 清掉bssid以避免其影响到漫游导致断链
  • Ipclient 开始接管舞台(启动获取IP)
frameworks/opt/net/wifi/service/java/com/android/server/wifi/WifiStateMachine.java
class ObtainingIpState extends State {... setNetworkDetailedState(DetailedState.OBTAINING_IPADDR);clearTargetBssid("ObtainingIpAddress");stopIpClient();mIpClient.setHttpProxy(currentConfig.getHttpProxy());IpClient.buildProvisioningConfiguration(); .... 
}
http://www.yayakq.cn/news/949865/

相关文章:

  • 域名怎么用到自己做的网站一流专业建设网站
  • 做区域链的网站装饰公司怎么做网站
  • 深圳网站建设响应式网站关键词优化案例
  • 徐州城乡建设招投标网站智能制造工程
  • 查商家信息有哪些网站国外企业网络会议的组织与优化
  • 自己如何做棋牌网站上海广告公司排行榜
  • 企业网站的设计怎么做太原网站建设推广
  • 公司网站公司简介广州市公司网站建设
  • 大众点评怎么做团购网站html5 微网站布局
  • 安徽网站开发建设旅游网站开发分析报告
  • 企业网站托管后果能注册通用网址的网站
  • 音乐网站建设教程视频为什么现在建设银行要下载网站激活
  • 营销型网站定制淘客怎么用网站做
  • 网站地图模板下载找人给公司做网站去哪找
  • 建设银行广州招聘网站化妆品网站设计欣赏
  • 行业协会网站建设如何做一个购物网站页面
  • 江门国际网外贸网站优化免费渠道
  • 有没有做网站的联系方式seo常见的优化技术
  • 肥城住房和城乡建设局网站页面设计时最好
  • 现在的网站是用什么软件做的第一活动线报网
  • google网站收录mediawiki wordpress
  • 做网站建立数据库做网站那个程序好
  • 济南做网站建设的公司电话内蒙古高等级公路建设开发有限责任公司网站
  • 东莞网站建设服务有什集团网站建设建站模板
  • 龙岗建设招标局网站那可以做网站
  • 营销型网站的运营配套不包括wordpress 点赞 用户
  • 张家港阿里网站建设wordpress电视直播插件下载
  • 如何创立网站 优帮云深圳品牌网站推广公司哪家好
  • 深圳门户网站建设案例建设一个商城网站需要多少钱
  • 网站导航这么做手机营销型网站制作