ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Android网络收集和ping封装库,flutter开发的app案例

2022-02-05 12:31:13  阅读:201  来源: 互联网

标签:请求 ip app ping 网络 netDiagnoService Android 执行


  • 比如,可以在开始请求记录时间,记录connectStart,connectEnd等方法时间,则可以计算出connect连接时间。

04.如何使用

  • 如下所示

new OkHttpClient.Builder()
//配置工厂监听器。主要是计算网络过程消耗时间
.eventListenerFactory(NetworkListener.get())
//主要是处理拦截请求,响应等信息
.addNetworkInterceptor(new StethoInterceptor())
.build()

  • 该库目的
  • 做成悬浮全局按钮,点击按钮可以查看该activity页面请求接口,可以查看请求几个接口,以及接口请求到响应消耗流量
  • 方便查看网络请求流程,比如dns解析时间,请求时间,响应时间
  • 方便测试查看请求数据,方便抓包。可以复制request,respond,body等内容。也可以截图
  • 待完善功能
  • 添加ping功能,通过ping检测网络问题,帮助诊断
  • 需要弄一个悬浮按钮,即添加跳转网路拦截list入口
  • 网络请求响应超过1秒后(也可能是2秒),需要给提示,便于那种网络超时

05.案例截图如下

06.网络请求接口信息

  • 请求接口如下所示
  • www.wanandroid.com/friend/json
  • General
  • Request URL: www.wanandroid.com/friend/json
  • Request Method: GET
  • Status Code: 200 OK
  • Remote Address: 47.104.74.169:443
  • Referrer Policy: no-referrer-when-downgrade
  • Response Header
  • HTTP/1.1 200 OK
  • Server: Apache-Coyote/1.1
  • Cache-Control: private
  • Expires: Thu, 01 Jan 1970 08:00:00 CST
  • Content-Type: application/json;charset=UTF-8
  • Transfer-Encoding: chunked
  • Date: Thu, 10 Sep 2020 01:05:47 GMT
  • Request Header
  • Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,/;q=0.8,application/signed-exchange;v=b3;q=0.9
  • Accept-Encoding: gzip, deflate, br
  • Accept-Language: zh-CN,zh;q=0.9
  • Cache-Control: no-cache
  • Connection: keep-alive
  • Cookie: JSESSIONID=5D6302E64E9734210FA231A6FAF5799E; Hm_lvt_90501e13a75bb5eb3d067166e8d2cad8=1598920692,1599007288,1599094016,1599629553; Hm_lpvt_90501e13a75bb5eb3d067166e8d2cad8=1599699419
  • Host: www.wanandroid.com
  • Pragma: no-cache
  • Sec-Fetch-Dest: document
  • Sec-Fetch-Mode: navigate
  • Sec-Fetch-Site: none
  • Upgrade-Insecure-Requests: 1
  • User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.102 Safari/537.36
  • Response返回body
  • 这里省略
  • 看截图如下

07.如何使用ping

  • ping的使用截图

  • ping是一个工具

  • Ping是Windows、Unix和Linux系统下的一个命令。ping也属于一个通信协议,是TCP/IP协议的一部分。

  • 利用“ping”命令可以检查网络是否连通,可以很好地帮助我们分析和判定网络故障。

  • Ping发送一个ICMP(Internet Control Messages Protocol)即因特网信报控制协议,回声请求消息给目的地并报告是否收到所希望的ICMP echo (ICMP回声应答),用来检查网络是否通畅或者网络连接速度的命令。广义来说即发送一个数据包,根据返回的数据包得到丢包率及平均时间得出网络的连接状态。

  • ping的作用有哪些

  • 我们可能都会遇到网站打不开,当出现不开的时候,我们也不知道是那里出了问题,不知道是不是解析出了问题还是网站的空间出了问题,这时候我们就可以通过ping来查找问题,看看网站能不能ping的通。

  • ping在Android的应用

  • 为了检查网络,在android上也可以通过ping来查看是否网络通。

  • 实现方案有哪些

  • 通过后台线程执行ping命令的方式模拟traceroute的过程,缺点就是模拟过程较慢,timeout的出现比较频繁

  • 通过编译开源网络检测库iputilsC代码的方式对traceroute进行了套接字发送ICMP报文模拟,可以明显提高检测速度

  • 深入理解iputils网络工具:blog.csdn.net/fsdev/categ…

  • 关于代码ping的过程信息

  • 开启一个AsyncTask,在doInBackground方法中开始解析,这个是入口。

  • 添加头部信息,主要包括:开始诊断 + 输出关于应用、机器、网络诊断的基本信息 + 输出本地网络环境信息

  • tcp三次握手操作

  • 开始执行链接,这里有两个重要信息。一个是ip集合,另一个是InetAddress数组,遍历【长度是ip集合length】,然后执行请求

  • 创建socketAddress,有两个参数,一个是ip,一个是端口号80,然后for循环执行socket请求

  • 在执行socket请求的时候,如果有监听到超时SocketTimeoutException异常则记录数据,如果有异常则记录数据

  • 当出现发生timeOut,则尝试加长连接时间,注意连续两次连接超时,停止后续测试。连续两次出现IO异常,停止后续测试

  • 当然只要有一次完整执行成功的流程,那么则记录三次握手操作成功

  • 诊断ping信息, 同步过程。这个主要是直接通过ping命令监测网络

  • 创建一个NetPing对象,设置每次ping发送数据包的个数为4个

  • 然后ping本机ip地址,ping本地网观ip地址,ping本地dns。这个ping的指令是啥?这个主要是用java中的Runtime执行指令……

  • 开始诊断traceRoute

  • 先调用原生jni代码,调用jni c函数执行traceroute过程。如果发生了异常,再调用java代码执行操作……

  • 然后通过ping命令模拟执行traceroute的过程,比如:ping -c 1 -t 1 www.jianshu.com

  • 如果成功获得trace:IP,则再次发送ping命令获取ping的时间

  • 在该项目中如何使用ping

  • 直接创建一个ping,需要传递一个网址url

_netDiagnoService = new NetDiagnoService(getContext(), getContext().getPackageName()
, versionName, userId, deviceId, host, this);
_netDiagnoService.execute();

  • 如何取消ping

if (_netDiagnoService!=null){
_netDiagnoService.cancel(true);
_netDiagnoService = null;
}
复制代码

  • 或者直接停止ping。停止线程允许,并把对象设置成null

最后送福利了,现在关注我并且加入群聊可以获取包含源码解析,自定义View,动画实现,架构分享等。
内容难度适中,篇幅精炼,每天只需花上十几分钟阅读即可。
大家可以跟我一起探讨,欢迎加群探讨,有flutter—底层开发—性能优化—移动架构—资深UI工程师 —NDK相关专业人员和视频教学资料,还有更多面试题等你来拿

点击GitHub领取
录播视频图.png

%99%E4%BA%9B%EF%BC%9F%E5%A6%82%E4%BD%95%E9%9D%A2%E8%AF%95%E6%8B%BF%E9%AB%98%E8%96%AA%EF%BC%81.md)**
[外链图片转存中…(img-3nB9K0rc-1644034866297)]

标签:请求,ip,app,ping,网络,netDiagnoService,Android,执行
来源: https://blog.csdn.net/m0_66264569/article/details/122789371

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有