我使用HttpClient将字节数组发布到服务器。 如何判断每秒传输的字节数?
答案 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计数器,可在此处找到: