Android网络收集和ping封装库 android 网络库

Android网络收集和ping封装库应用代码如下所示
new OkHttpClient.Builder() .addNetworkInterceptor(new StethoInterceptor()) .build()
那么既然网络

申请代码如下

新的OkHttpClient.Builder()

.addNetworkInterceptor(new StethoInterceptor())

。建造()

在网络请求中添加一个StethoInterceptor,以便可以拦截网络请求和响应信息并将其发送给Chrome。那么,你可以自己使用吗. 是的,StethoInterceptor 流程可以简化如下:当你发送请求时,向Chrome 发送一条消息,当收到请求时,向Chrome 发送一条消息两者。消息通过EventID 链接。它们的类型是OkHttpInspectorRequest和OkHttpInspectorResponse,分别继承自NetworkEventReporter.InspectorRequest和NetworkEventReporter.InspectorResponse。只要继承这两个类,自己的网络库就可以在发送和接收请求时构造并向Chrome发送请求和响应。如何使用Facebook的stetho库在Android中用于拦截你手机的请求,进入你的Chrome浏览器并在浏览器的地址栏中输入chrome://inspect。查看请求信息。是否可以将获取到的请求信息放入一个集合中并显示在Android页面上?这样方便开发和测试查看网络请求信息以及请求过程所花费的时间,如DNS解析时间、请求时间、响应时间、总花费时间等。 OkHttp 库中的EventListener 类。此类是网络事件的侦听器。扩展此类以监视应用程序HTTP 调用的数量、大小和持续时间。所有开始/连接/获取事件最终都会收到一个匹配的结束/释放事件,该事件要么成功(非空参数),要么失败(非空可抛出)。例如,您可以记录链接开始的时间,并使用DNS start、end等方法解析记录的时间,并计算DNS解析时间。比如可以先请求记录时间,记录connectStart、connectEnd等方法时间,然后计算connection连接时间。

04.如何使用

如下

新的OkHttpClient.Builder()

//设置工厂监听器。主要计算网络处理所需的时间。

.eventListenerFactory(NetworkListener.get())

//主要处理拦截请求、响应等信息

.addNetworkInterceptor(new StethoInterceptor())

。建造()

该库的目的是创建浮动全局按钮。单击该按钮可以查看您的活动页面上的请求接口数量以及请求接口与响应接口之间消耗的流量。查看DNS解析时间、请求时间、响应时间等网络请求流程,并测试和查看请求数据,方便抓包。您可以复制请求、响应和正文等内容。您还可以对功能进行屏幕截图以改进和添加ping 功能,以帮助检测和诊断网络问题。即必须在网络请求后添加跳转网络拦截列表条目。如果响应时间超过1 秒(也许是2 秒),您应该给出提示以促进这种网络超时。

05.案例截图如下

06.网络请求接口信息

请求接口如下

www.wanandroid.com/friend/json

一般的

请求URL: www.wanandroid.com/friend/json

请求方法: GET

状态码: 200 正常

远程地址: 47.104.74.169:443

推荐人政策: 降级时无推荐人

响应头

HTTP/1.1 200 好

服务器: Apache-Coyote/1.1

缓存控制: 私有

过期时间: 1970 年1 月1 日星期四08:00:00 CST

Content-Type: application/json;charset=UTF-8

Transfer-Encoding: 分块

日期: 2020 年9 月10 日,星期四01:05:47 GMT

请求头

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

接受语言: zh-CN,zh;q=0.9

Cache-Control: 无缓存

连接:保持活动

Cookie: JSESSIONID=5D6302E64E9734210FA231A6FAF5799E; H m_lpvt_90501e13a75bb5eb3d067166e8d2cad8=1599699419

Host: www.wanandroid.com

Pragma: 无缓存

Sec-Fetch-Dest: 文档

Sec-Fetch-Mode: 导航

Sec-Fetch-Site: 无

不安全的升级请求: 1

User-Agent: Mozilla/5.0(Macintosh;Intel Mac OS X 10_14_6) AppleWebKit/537.36(KHTML、Gecko 等) Chrome/85.0.4183.102 Safari/537.36

响应返回主体

此处省略

请参阅下面的屏幕截图

07.如何使用ping

ping使用情况截图

ping 是一个工具

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

“ping”命令允许您检查网络是否已连接,并可以帮助您分析和识别网络故障。

Ping 向目的地发送互联网控制消息协议(ICMP)回显请求消息,报告是否收到所需的ICMP 回显(ICMP 回显回复),并确定网络是否畅通以及网络连接的速度如何进行确认。广义上是指发送数据包并根据返回的数据包获取丢包率和平均时间,获取网络连接状态。

ping 的作用是什么?

如果无法打开网站,目前我们不知道是我们分析的问题还是网站容量的问题。我们可以ping 通我们来找出问题所在,看看能否ping 通网站。

Android 上的ping 应用程序

要检查您的网络,您还可以在Android 上使用ping 来查看网络是否已连接。

实施计划是什么?

Traceroute 过程是通过后台线程运行ping 命令来模拟的。缺点是模拟过程较慢且超时发生较多。

通过编译开源网络发现库iputilsC的代码,它模拟了traceroute并通过套接字发送ICMP消息,大大提高了发现速度。

更深入了解iputils网络工具:blog.csdn.net/fsdev/categ.

有关代码ping 过程的信息

启动AsyncTask并在doInBackground方法中开始解析。这是你的切入点。

增加头信息,主要包括:启动诊断+输出应用程序、机器、网络诊断的基本信息+输出本地网络环境信息

TCP三路握手操作

要开始运行链接,这里有两个重要信息。一个是IP集,另一个是InetAddress数组,我们遍历该数组[length是IP集的长度]并执行请求。

使用两个参数(一个ip 和一个端口号80)创建套接字地址,并在for 循环中执行套接字请求。

执行socket请求时,如果检测到超时SocketTimeoutException,则会记录数据。如果发生异常,则会记录数据。

如果发生超时,请观察连续两次连接超时,以增加连接时间并停止进一步的测试。连续发生两次IO异常,后续测试停止。

当然,只要过程完全成功,就记录一次成功的三次握手操作。

诊断ping信息,同步进程。主要是通过ping命令直接监控网络。

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

然后ping 本地IP 地址、ping 本地网络IP 地址、ping 本地DNS。这个ping 命令是什么?它主要使用Java 运行时来执行指令。

启动跟踪路由诊断

首先我们调用本机jni代码并调用jni c函数来运行traceroute进程。如果出现异常,则调用Java代码执行操作。

接下来使用ping命令(例如ping -c 1 -t 1 www.jianshu.com)来模拟运行traceroute的过程。

成功获取trace:IP后,再次发送ping命令即可获取ping时间。

如何在本项目中使用ping

要直接创建ping,需要传递URL

_netDiagnoService=new NetDiagnoService(getContext(), getContext().getPackageName()

,版本名称,用户ID,设备ID,主机,这个);

_netDiagnoService.execute();

如何取消ping

如果(_netDiagnoService!=null){

_netDiagnoService.cancel(true);

_netDiagnoService=null;

}

复制代码

或者,停止ping。停止线程权限并将对象设置为null

_netDiagnoService.stopNetDialogsis();

关于监控

/**

诊断完成,打印所有日志记录@param log log 日志输出

*/

@覆盖

公共无效OnNetDiagnoFinished(字符串日志){

设置文本(日志);

}

/**

网络诊断时监控日志输出@param log log 日志输出

*/

@覆盖

公共无效OnNetDiagnoUpdated(字符串日志){

显示信息+=日志;

setText(显示信息);

}

最后

多年来,编辑了解到,大多数入门级和中级Android工程师想要提高自己,往往必须自己探索和成长,这是不系统的、短暂的,我了解到这并没有帮助。

因此,我们收集整理了《2024年Android移动开发全套学习资料》册。最初的目的也很简单。换句话说,我们想帮助那些想学习、提高自己,但不知道从哪里开始的朋友。

由于文件较多,这里仅展示部分目录截图。这套完整的内容包括对领先制造商的采访、学习笔记、源代码讲义、实践项目、概述路线、电子书和教学视频。它将继续更新。

一个人可以走得快,但一群人可以走得更远。无论是IT行业的资深人士还是对IT行业感兴趣的新人。

欢迎任何人加入我们的圈子(技术交流、学习资源、职场投诉、大公司内部推荐、面试指导),让我们一起学习、成长!

如果您需要此信息,请从第 栏中获取。

080734)]

由于文件较多,这里仅展示部分目录截图。这套完整的内容包括对领先制造商的采访、学习笔记、源代码讲义、实践项目、概述路线、电子书和教学视频。它将继续更新。

一个人可以走得快,但一群人可以走得更远。无论是IT行业的资深人士还是对IT行业感兴趣的新人。

欢迎任何人加入我们的圈子(技术交流、学习资源、职场投诉、大公司内部推荐、面试指导),让我们一起学习、成长!

如果您需要此信息,请从第 栏中获取。

以上#Android网络采集及ping包库相关内容来源网络,仅供参考。相关信息请参见官方公告。

原创文章,作者:CSDN,如若转载,请注明出处:https://www.sudun.com/ask/91884.html

(0)
CSDN's avatarCSDN
上一篇 2024年6月24日 上午4:56
下一篇 2024年6月24日 上午6:08

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注