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

Android网络收集和ping封装库功能Stetho 是 Facebook 开源的一个 Android 调试工具。是一个 Chrome Developer Tools 的扩展,可用来检测应用的网络、数据库、WebKit 、S

Function Stetho 是Facebook 开源的Android 调试工具。这是Chrome 开发者工具的扩展,您可以使用它来发现网络、数据库、WebKit、SharePreferences 以及应用程序的其他方面。开发人员还可以通过dumpapp 工具访问应用程序的内部结构,该工具提供了强大的命令行界面。

02.stetho大概流程

口头描述如下: 1. 当安装了stetho插件的应用程序启动时,本地服务器1(LocalSocketServer)启动并等待应用程序(客户端)连接。 2、同时,这个本地服务器1连接到另一个本地服务器2(ChromeDevtoolsServer)。 3. 本地应用连接后,数据会持续发送到本地服务器1,然后转发到服务器2.4,在服务器2.4上访问ChromeDevtoolsServer并发送数据,就像访问网站一样。一旦聘请了开发人员,整个过程就完成了。整个网络请求主要分为几个步骤,整个请求所消耗的时间可以细分到每个步骤。 DNS 解析。通过DNS服务器获取对应域名的IP地址。这一步我们会更加关注DNS解析耗时、运营商LocalDNS劫持、DNS调度等问题。创建连接。与服务器建立连接。这包括TCP 三向握手、TLS 密钥协商等。如何选择多个IP/端口,是否使用HTTPS,以及是否可以减少或节省创建连接的时间。发送和接收数据。一旦连接成功建立,你就可以轻松地与服务器交互,组装数据、发送数据、接收数据、解析数据。思考如何根据网络情况更好地利用带宽,如何快速检测网络延迟,以及当网络较弱时如何调整数据包大小。关闭连接。关闭连接似乎很容易

03.Android中应用

申请代码如下

新的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/jsonGeneralRequest URL: www.wanandroid.com/friend/jsonRequest Method: GETStatus Code: 200 OKRemote Address: 47.104.74.169:443Referrer Policy: no-referrer-when-downgradeResponse HTTP/1.1 200 er: Apache -郊狼/1.1Cache-Control: privateExpires: 1970 年1 月1 日星期四08:00:00 CSTContent-Type: application/json;charset=UTF-8Transfer-Encoding: chunkedDate: 2020 年9 月10 日星期四01:05 333 604 7 GMTRequest HeaderAccept: 文本/html,应用程序/xhtml + xml,应用程序/xml ;q=0.9,image/avif,image/webp,image/apng,/;q=0.8,application/signed-exchange;v=b3;q=0.9Accept-Encoding: gzip, deflate, brAccept -Language: zh- CN, zh; hm_lvt_90501e13a75bb5eb3d067166e 8d2cad8=1598920692; CN, q=0.9Cache-Control: no-cacheConnection: keep-aliveCookie: 1 599007288,1599094016,1599629553; Hm_lpvt_90501e13a75bb5eb3d067166e8d2cad8=1599699419Host: www.wanandroid.comPragma: Sec-Fetch-Dest: documentSec -Fetch -mode3336 0 导航秒-Fetch- Site: noneUpgrade-Insecure-Requests: 1User-Agent: Mozilla/5.0(Macintosh;Intel Mac OS)

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;

最后

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

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

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

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

获取信息专栏

您可以帮助想要学习和提高自己但不知道从哪里开始的朋友。 **

[正在传输外部链接图像.(img-wCPVNmOJ-1718993987603)]

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

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

获取信息专栏

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

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

(0)
CSDN's avatarCSDN
上一篇 2024年6月22日 上午6:42
下一篇 2024年6月22日 上午6:42

相关推荐

发表回复

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