golang中如何基于net包实现Curl获取下载速度等指标

1. 运行环境

  • go v1.18.1
  • centos7

2. 问题描述?

使用net包实现curl指令功能,发现只能模拟请求get,post等方式,存在两个问题

  • 1:下载速度,时间,文件大小这些数据怎么获取
  • 2:指定ip的curl指令,如何使用net包实现,比如:curl –connect-timeout 5 -m 30 -w %{http_code}::%{speed_download}::%{size_download}”\n” -x 127.0.0.1:80 “http://xxx.com/1M.png"

3. 您期望得到的结果?

  • 给出指导建议,例如有其他包可以实现(exec包执行命令除外)
  • 给出方法,相关指标计算与哪些参数有关,获取途径是啥

4. 您实际得到的结果?

目前使用net包,只能间接计算建联时间,文件大小,下载速度
存在准确度问题

最佳答案

使用支持多种协议吗,如果只要 http 方面, 怎么不使用 http 包呢,1. response header 里就有内容大小,2. 下载速率=总大小/每秒的下载大小,3. 总耗时=总大小/速率

2周前 评论
xuesongtao (作者) 2周前
xuanyu_li (楼主) 2周前
xuesongtao (作者) 2周前
xuanyu_li (楼主) 2周前
xuesongtao (作者) 2周前
xuesongtao (作者) 2周前
xuanyu_li (楼主) 2周前
xuesongtao (作者) 2周前
xuanyu_li (楼主) 2周前
xuanyu_li (楼主) 1周前
讨论数量: 13

使用支持多种协议吗,如果只要 http 方面, 怎么不使用 http 包呢,1. response header 里就有内容大小,2. 下载速率=总大小/每秒的下载大小,3. 总耗时=总大小/速率

2周前 评论
xuesongtao (作者) 2周前
xuanyu_li (楼主) 2周前
xuesongtao (作者) 2周前
xuanyu_li (楼主) 2周前
xuesongtao (作者) 2周前
xuesongtao (作者) 2周前
xuanyu_li (楼主) 2周前
xuesongtao (作者) 2周前
xuanyu_li (楼主) 2周前
xuanyu_li (楼主) 1周前

需要使用net/http/httptrace才能获取http的每个步骤耗时,可以参考客户端req的trace接入。

github.com/imroc/req/blob/master/t...

下面是req的trace输出结果:

file

2周前 评论
xuanyu_li (楼主) 2周前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!