如何通过HttpClient获取上传速度

时间:2018-06-16 07:47:38

标签: c# httpclient

我使用HttpClient将字节数组发布到服务器。 如何判断每秒传输的字节数?

1 个答案:

答案 0 :(得分:2)

最简单,天真的方法是使用Stopwatch类来获取HttpClient.PostAsync调用之前和之后的间隔,然后将该时间除以有效负载大小:

byte[] payload = GetData();
var content = new ByteArrayContent(payload);
var stopwatch = Stopwatch.Start();
await httpClient.PostAsync(url, content);
stopwatch.Stop();
var bps = payload.Length / stopwatch.Elapsed.TotalSeconds;

这是一种原始方法,因为它不计算实际字节通过网络接口所花费的时间,而是计算HttpClient类执行POST操作所花费的总时间 - 包括分配内存,必要时启动线程,async / await操作的机制等等。但是,在大多数情况下,这些都明显快于实际I / O,所以它可能可以忽略不计 - 这取决于您对结果的准确程度。

使用NetworkInterface类可以更精确地检查BytesSent计数器,可在此处找到: