android 限速工具,Android下载器之限速篇

本文介绍了如何在Android下载器中实现限速功能。限速主要针对从socket的InputStream进行,通过在每次read操作前后记录时间,计算并调整等待时间以控制宏观上的平均下载速度。代码示例展示了如何在读取数据后根据目标速度计算并执行休眠,从而实现限速。此外,文中提到此方法适用于任何I/O流操作,且由于限制的是平均速度,可能会导致网络速度监测软件显示波动。
摘要由CSDN通过智能技术生成

0x01 前言

终于考完了马原完成了大学的最后一门考试,可以愉快的写代码了~今天就来记录一下我的下载器中是如何实现限速的。

0x02 限速的对象

市面上常见的专业下载器都会提供下载/上传限速这个功能,那限速究竟是限的哪一个速度呢?

我们都知道HTTP/HTTPS的传输层协议是TCP,TCP是基于字节流的。字节流在Java中对应的就是InputStream和OutputStream。基于TCP的传输层下载/上传的步骤一般是

建立TCP连接,对应Java的Socket.connect()。这期间会经历三次握手,是一个耗时过程,可以使用连接复用优化(OKHttp已经做了连接池缓存)。

连接成功后就可以根据需要收发数据,利用Socket获取到连接的InputStream和OutputStream操作即可。

关闭连接。

以下载为例,首先连接步骤是不需要限速的,因为连接部分通常是很快的,并且往往都想要连接更加快速。所以,我们限速的对象肯定就是从socket的InputStream这一步骤。

0x03 如何“限速”?

首先,这里的限速并不是真的限制读写数据流每时每刻的速度。这里要分清高中物理学过的两个概念——瞬时速度和平均速度。

equation?tex=s(t)

equation?tex=t时刻下载的字节,

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值