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

网站开发招标技术要求如何微信支付购物网站

网站开发招标技术要求,如何微信支付购物网站,闵行网站建站多少钿,wordpress主题上传到哪里干了六个月的网络协议栈#xff0c;又回到了wifi老本行#xff0c;所以我最近又开始研读 Android wifi fwk的源码了 之前还在干wifi的时候就思考过一个问题#xff0c;wifi区别于蓝牙的一个很明显的点是#xff0c;wifi可以提供 access to Internet 所以我想看看wifi连接成…干了六个月的网络协议栈又回到了wifi老本行所以我最近又开始研读 Android wifi fwk的源码了 之前还在干wifi的时候就思考过一个问题wifi区别于蓝牙的一个很明显的点是wifi可以提供 access to Internet 所以我想看看wifi连接成功后是怎么给上层app提供网络的 前言研读过程中发现整个机制中有大量的类且它们的命名非常符合自身的功能这是我觉得oop语言很有趣也是很容易上手的原因 与之前解决 WNS 选网过程一样解读的过程中我会尝试给出一个大概的通俗语言描述的模型 注册 NetworkOffer WifiService(SystemService的子类)在完全开机后会执行 handleBootCompleted() 方法注册自己魔改的几个NetworkFactory 我们只关注 WifiNetworkFactory //WifiServiceImpl.java public void handleBootCompleted() {mWifiThreadRunner.post(() - {Log.d(TAG, Handle boot completed);//...mWifiInjector.getWifiNetworkFactory().register();mWifiInjector.getUntrustedWifiNetworkFactory().register();mWifiInjector.getOemWifiNetworkFactory().register();}); }NetworkFactory register动作主要做的是 ConnectivityManager.registerNetworkProvider(new NetworkProvider)handleOfferNetwork - ConnectivityManager.offerNetwork //NetworkFactoryImpl.java private void register(final String logTag, final boolean listenToAllRequests) {mProvider new NetworkProvider(mContext, NetworkFactoryImpl.this.getLooper(), logTag) {Overridepublic void onNetworkRequested(NonNull NetworkRequest request, int score,int servingProviderId) {handleAddRequest(request);}Overridepublic void onNetworkRequestWithdrawn(NonNull NetworkRequest request) {handleRemoveRequest(request);}};((ConnectivityManager) mContext.getSystemService(Context.CONNECTIVITY_SERVICE)).registerNetworkProvider(mProvider);if (listenToAllRequests) {sendMessage(obtainMessage(CMD_LISTEN_TO_ALL_REQUESTS));} else {sendMessage(obtainMessage(CMD_OFFER_NETWORK));} }//handle CMD_OFFER_NETWORK msg 的逻辑 //此处 mScore 0 private void handleOfferNetwork(NonNull final NetworkScore score) {mProvider.registerNetworkOffer(score, mCapabilityFilter, mExecutor, mRequestCallback); }//NetworkProvider.java public void registerNetworkOffer(NonNull final NetworkScore score,NonNull final NetworkCapabilities caps, NonNull final Executor executor,NonNull final NetworkOfferCallback callback) {mContext.getSystemService(ConnectivityManager.class).offerNetwork(providerId, score, caps, proxy); }简单总结到这里wifi fwk已经成功地向 CS 注册了一个 NetworkProvider并且经由这个 NetworkProvider 给出了一个 NetworkOffer 这个 NetworkOffer 就是用来去 satisfy 上层app发起的 NetworkRequest 的当 CS match 某NetworkOffer 和 某NetworkRequest 的时候就意味着这个app发起的网络请求将由匹配的网络来处理 不过wifi fwk给出的这个 NetworkOffer尚处于不能 handle network request 的状态因为它的 score 是 0 创建NetworkAgent wifi fwk STA mode的状态机进入 L2ConnectedState 后(L2表示关联上了之后会进行DHCP拿到ip后进入L3ConnectedState)会创建 NetworkAgent //ClientModeImpl.java //class L2ConnectedState的EA mNetworkAgent mWifiInjector.makeWifiNetworkAgent(nc, mLinkProperties, naConfig,mNetworkFactory.getProvider(), new WifiNetworkAgentCallback()); mWifiScoreReport.setNetworkAgent(mNetworkAgent);如上代码所示WifiScoreReport 持 WifiNetworkAgent 它会根据wifi链路状态实时地更新wifi网络在 CS 中的评分通过调用 sendNetworkScore 方法 创建 NetworkAgent 触发的一系列动作如下 最主要的是 创建NetworkMonitor //WifiNetworkAgent.java public WifiNetworkAgent(NonNull Context context,NonNull Looper looper,NonNull NetworkCapabilities nc,NonNull LinkProperties lp,NonNull NetworkAgentConfig config,Nullable NetworkProvider provider,NonNull Callback wifiNetworkAgentCallback) {super(context, looper, TAG, nc, lp, ConnectedScore.WIFI_INITIAL_SCORE, config, provider);register(); }//NetworkAgent.java public Network register() {synchronized (mRegisterLock) {final ConnectivityManager cm (ConnectivityManager) mInitialConfiguration.context.getSystemService(Context.CONNECTIVITY_SERVICE);mNetwork cm.registerNetworkAgent(new NetworkAgentBinder(mHandler),new NetworkInfo(mInitialConfiguration.info),mInitialConfiguration.properties, mInitialConfiguration.capabilities,mInitialConfiguration.score, mInitialConfiguration.config, providerId);}return mNetwork; }//ConnectivityService.java private Network registerNetworkAgentInternal(INetworkAgent na, NetworkInfo networkInfo,LinkProperties linkProperties, NetworkCapabilities networkCapabilities,NetworkScore currentScore, NetworkAgentConfig networkAgentConfig, int providerId,int uid) {LinkProperties lp new LinkProperties(linkProperties);final NetworkCapabilities nc new NetworkCapabilities(networkCapabilities);final NetworkAgentInfo nai new NetworkAgentInfo(na,new Network(mNetIdManager.reserveNetId()), new NetworkInfo(networkInfo), lp, nc,currentScore, mContext, mTrackerHandler, new NetworkAgentConfig(networkAgentConfig),this, mNetd, mDnsResolver, providerId, uid, mLingerDelayMs,mQosCallbackTracker, mDeps);mDeps.getNetworkStack().makeNetworkMonitor(nai.network, name, new NetworkMonitorCallbacks(nai));return nai.network; }NetworkMonitor创建成功后CS 会触发 onNetworkMonitorCreated 回调处理逻辑是 mNetworkMonitor.start() 我们在 main log中经常可以看到 NetworkMonitor http/https/dns probe fail这说明 NetworkMonitor 的功能是受控去 probe 指定url根据返回的status code判断当前链接的状态 实时更新 Network wifi fwk STA mode处于 L2ConnectedState接收到 CMD_IP_CONFIGURATION_SUCCESSFUL msg(意味着DHCP完成这个网络有了自己的ip) //ClientModeImpl.java case CMD_IP_CONFIGURATION_SUCCESSFUL: {if (getConnectedWifiConfigurationInternal() null || mNetworkAgent null) {mWifiNative.disconnect(mInterfaceName);} else {handleSuccessfulIpConfiguration();sendConnectedState();transitionTo(mL3ConnectedState);}break; }private void sendConnectedState() {mNetworkAgent.markConnected();sendNetworkChangeBroadcast(DetailedState.CONNECTED); }//NetworkAgent.java public void markConnected() {mNetworkInfo.setDetailedState(NetworkInfo.DetailedState.CONNECTED, null /* reason */,mNetworkInfo.getExtraInfo());queueOrSendNetworkInfo(mNetworkInfo); }markConnected 之后NetworkAgent 会把更新了状态的 NetworkInfo 同步给 CS 同步过程如下 //NetworkAgentInfo.java public void sendNetworkInfo(NonNull NetworkInfo info) {mHandler.obtainMessage(NetworkAgent.EVENT_NETWORK_INFO_CHANGED,new Pair(NetworkAgentInfo.this, info)).sendToTarget(); }//ConnectivityService.java //NetworkStateTrackerHandler handle this msg case NetworkAgent.EVENT_NETWORK_INFO_CHANGED: {NetworkInfo info (NetworkInfo) arg.second;updateNetworkInfo(nai, info);break; }private void updateNetworkInfo(NetworkAgentInfo networkAgent, NetworkInfo info) {if (!networkAgent.everConnected state NetworkInfo.State.CONNECTED) {rematchAllNetworksAndRequests();} else if (state NetworkInfo.State.DISCONNECTED) {networkAgent.disconnect();} }rematchAllNetworksAndRequests 做的事情便是重新匹配 Network 和 NetworkRequest 我们在main log中经常可以见到 CS NetworkRequest reassign 的打印这代表原来由某网络负责的NetworkRequest被分配给另一网络处理了 任何一个网络的状态稍有改变都会触发这个动作 WifiScoreReport sendNetworkScore 后触发的流程与上面类似只不过 msg 换成了 EVENT_NETWORK_SCORE_CHANGED //ConnectivityService.java private void updateNetworkScore(NonNull final NetworkAgentInfo nai, final NetworkScore score) {nai.setScore(score);rematchAllNetworksAndRequests(); }总结 WifiService 在开机完成后就像 CS 注册了一个 NetworkProvider并经由这个NetworkProvider注册了一个 NetworkOffer只不过处于一个无法向外提供服务的状态。 当连接上某wifi完成了数据链路层的连接后wifi 创建一个 NetworkAgent 用于管理这个网络同时CS创建一个 NetworkMonitor 用于监管这个网络。 当DHCP完成wifi网络理论上可以与外界通信后wifi 的NetworkAgent实时地告知 CS 其NetworkInfo 的改动 CS 会重新调整 NetworkRequest 与 Network 的匹配关系。 后续研读计划 这个方面实际要研读的东西还有很多一开始是想要搞懂wifi连接上后如何提供网络的 看和写的过程中意识到还应该系统地弄清楚这些问题 wifi 改动网络评分的细节(WifiNetworkAgent WifiScoreReport)CS rematch 的细节(显然CS绝对不是唯评分论的单一匹配机制)macth后一个NetworkRequest是怎么被satisfy的 (数据通路是怎样的) 后记理解了这个模型大概可以搞清wifi连接上后是怎么提供网络的了但是搞清楚这个对于日常工作做trouble shooting有什么帮助吗 貌似也没有多大帮助 哈哈哈哈图一乐
文章转载自:
http://www.morning.tssmk.cn.gov.cn.tssmk.cn
http://www.morning.tdcql.cn.gov.cn.tdcql.cn
http://www.morning.rrrrsr.com.gov.cn.rrrrsr.com
http://www.morning.brwp.cn.gov.cn.brwp.cn
http://www.morning.yjqkk.cn.gov.cn.yjqkk.cn
http://www.morning.gwjqq.cn.gov.cn.gwjqq.cn
http://www.morning.hwpcm.cn.gov.cn.hwpcm.cn
http://www.morning.saastob.com.gov.cn.saastob.com
http://www.morning.lkbyq.cn.gov.cn.lkbyq.cn
http://www.morning.jqtb.cn.gov.cn.jqtb.cn
http://www.morning.lmfmd.cn.gov.cn.lmfmd.cn
http://www.morning.xfrqf.cn.gov.cn.xfrqf.cn
http://www.morning.hpkr.cn.gov.cn.hpkr.cn
http://www.morning.bzjpn.cn.gov.cn.bzjpn.cn
http://www.morning.dycbp.cn.gov.cn.dycbp.cn
http://www.morning.dqpd.cn.gov.cn.dqpd.cn
http://www.morning.yqkxr.cn.gov.cn.yqkxr.cn
http://www.morning.jqpyq.cn.gov.cn.jqpyq.cn
http://www.morning.brtxg.cn.gov.cn.brtxg.cn
http://www.morning.redhoma.com.gov.cn.redhoma.com
http://www.morning.qlrwf.cn.gov.cn.qlrwf.cn
http://www.morning.lsyk.cn.gov.cn.lsyk.cn
http://www.morning.ryyjw.cn.gov.cn.ryyjw.cn
http://www.morning.hctgn.cn.gov.cn.hctgn.cn
http://www.morning.nd-test.com.gov.cn.nd-test.com
http://www.morning.yunease.com.gov.cn.yunease.com
http://www.morning.slfmp.cn.gov.cn.slfmp.cn
http://www.morning.dangaw.com.gov.cn.dangaw.com
http://www.morning.kqglp.cn.gov.cn.kqglp.cn
http://www.morning.qsctt.cn.gov.cn.qsctt.cn
http://www.morning.fqnql.cn.gov.cn.fqnql.cn
http://www.morning.sxhdzyw.com.gov.cn.sxhdzyw.com
http://www.morning.fldsb.cn.gov.cn.fldsb.cn
http://www.morning.bnzjx.cn.gov.cn.bnzjx.cn
http://www.morning.plflq.cn.gov.cn.plflq.cn
http://www.morning.ktmnq.cn.gov.cn.ktmnq.cn
http://www.morning.qrmry.cn.gov.cn.qrmry.cn
http://www.morning.ndltr.cn.gov.cn.ndltr.cn
http://www.morning.weiwt.com.gov.cn.weiwt.com
http://www.morning.ndmbd.cn.gov.cn.ndmbd.cn
http://www.morning.bwkzn.cn.gov.cn.bwkzn.cn
http://www.morning.fglyb.cn.gov.cn.fglyb.cn
http://www.morning.pljdy.cn.gov.cn.pljdy.cn
http://www.morning.lfxcj.cn.gov.cn.lfxcj.cn
http://www.morning.kmprl.cn.gov.cn.kmprl.cn
http://www.morning.rkgyx.cn.gov.cn.rkgyx.cn
http://www.morning.bjjrtcsl.com.gov.cn.bjjrtcsl.com
http://www.morning.kyytt.cn.gov.cn.kyytt.cn
http://www.morning.tnktt.cn.gov.cn.tnktt.cn
http://www.morning.kfyjh.cn.gov.cn.kfyjh.cn
http://www.morning.mmtbn.cn.gov.cn.mmtbn.cn
http://www.morning.nyfyq.cn.gov.cn.nyfyq.cn
http://www.morning.llcsd.cn.gov.cn.llcsd.cn
http://www.morning.irqlul.cn.gov.cn.irqlul.cn
http://www.morning.tfwg.cn.gov.cn.tfwg.cn
http://www.morning.thxfn.cn.gov.cn.thxfn.cn
http://www.morning.trtxt.cn.gov.cn.trtxt.cn
http://www.morning.xyrss.cn.gov.cn.xyrss.cn
http://www.morning.nqbkb.cn.gov.cn.nqbkb.cn
http://www.morning.ctbr.cn.gov.cn.ctbr.cn
http://www.morning.pmjhm.cn.gov.cn.pmjhm.cn
http://www.morning.qzsmz.cn.gov.cn.qzsmz.cn
http://www.morning.dxsyp.cn.gov.cn.dxsyp.cn
http://www.morning.lkbyq.cn.gov.cn.lkbyq.cn
http://www.morning.sfsjh.cn.gov.cn.sfsjh.cn
http://www.morning.fbmjl.cn.gov.cn.fbmjl.cn
http://www.morning.yzygj.cn.gov.cn.yzygj.cn
http://www.morning.rxsgk.cn.gov.cn.rxsgk.cn
http://www.morning.kycwt.cn.gov.cn.kycwt.cn
http://www.morning.xxiobql.cn.gov.cn.xxiobql.cn
http://www.morning.wmrgp.cn.gov.cn.wmrgp.cn
http://www.morning.rhmk.cn.gov.cn.rhmk.cn
http://www.morning.dlmqn.cn.gov.cn.dlmqn.cn
http://www.morning.yzxlkj.com.gov.cn.yzxlkj.com
http://www.morning.fgsct.cn.gov.cn.fgsct.cn
http://www.morning.ytrbq.cn.gov.cn.ytrbq.cn
http://www.morning.xfjwm.cn.gov.cn.xfjwm.cn
http://www.morning.jnoegg.com.gov.cn.jnoegg.com
http://www.morning.rryny.cn.gov.cn.rryny.cn
http://www.morning.lltdf.cn.gov.cn.lltdf.cn
http://www.tj-hxxt.cn/news/259949.html

相关文章:

  • 个人网站的重要性青岛网站排名多少钱
  • 门户网站和部门网站的区别建设部网站四库一平台
  • 峰峰专业做网站wordpress搭建系统
  • 网站建设策划结构免费开源分类信息系统
  • 企业网站html源码千图网素材下载网站
  • 如何保护自己的网站中山 网站设计
  • 黄冈网站推广优化找哪家休闲会所网站建设
  • 网站建设实战视频教程做现货黄金网站
  • 城乡建设网站证件查询系统苏州软件公司排行榜
  • 佛山h5网站公司网站制作论文答辩
  • 个人免费开店的网站手机写文章用wordpress
  • 免费行情软件app网站不下载四川省城乡与建设厅网站
  • 音乐网站设计规划书wordpress链接的index.php
  • 小说网页网站建设网站备案注销申请表
  • 学做网站设计校园门户网站设计论文
  • 价钱网站建设科技作品
  • 网站建设项目评审意见民族团结 网站建设
  • 网站建设及优化重要性怎么自己做淘宝客网站
  • 五金制品东莞网站建设伍佰亿书画网网站
  • 河南郑州新闻重庆官网seo分析
  • 建站程序大全网页制作的公司收费
  • 采购网站官网如何提升网站知名度
  • 知名的集团门户网站建设费用网奇e游通旅游网站
  • 网站收录很好没排名东莞常平嘉盛学校
  • 一个网站做十个二级域名网站必须要求备案吗
  • 国内 响应式网站湖南网站建设公司排名
  • 网站建设目的和意义企业网站建立步骤
  • 做网站要掌握几种语言ps网页制作视频教程
  • 个人网站建设基本教程wordpress 工作流
  • 在线做数据图的网站石家庄网络科技有限公司