(P18)miniftpd项目实战18:限速实现

文章目录

1.限速实现

  • 限速的关键是睡眠,如果发现当前传输速度超过最大传输速度就让进程睡眠。
传输速度 = 传输字节数 / 传输时间;

IF 当前传输速度 > 最大传输速度 THEN
	睡眠时间 = (当前传输速度 / 最大传输速度 – 1) * 当前传输时间;

=====》用初中的方法简单推导下
=====》由传输速度 = 传输字节数 / 传输时间;关系可知,速度与时间成反比
速度1 / 速度2 = 时间2 / 时间1
=====》推导
速度1 / 速度2 - 1 = 时间2 / 时间1 -1 = (时间2 - 时间1) / 时间1
(时间2 - 时间1) = (速度1 / 速度21) *时间1

速度1当作当前传输速度,速度2当作最大传输速度,时间1是当前传输速度所花销的时间
  • eg:miniftpd18\ftpproto.c
void limit_rate(session_t *sess, int bytes_transfered, int is_upload)

miniftpd18\sysutil.h,miniftpd18\sysutil.c

long get_time_sec(void);
long get_time_usec(void);
void nano_sleep(double seconds);
  • 测试:
    上传限制100KB/s,下载限制为200KB/s
    在这里插入图片描述
    下载速度是200K左右
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

喜欢打篮球的普通人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值