gpt4 book ai didi

c# - 使用 c# 测量 tcp 上的数据传输速率

转载 作者:太空宇宙 更新时间:2023-11-03 14:23:46 24 4
gpt4 key购买 nike

我想测量当前的下载速度。我正在通过 tcp 发送大文件。我怎样才能捕捉到每秒的传输速率?如果我使用 IPv4InterfaceStatistics 或类似方法,而不是捕获文件传输速率,我将捕获设备传输速率。捕获设备传输速率的问题是它通过网络设备捕获所有正在进行的数据,而不是我传输的单个文件。

如何获取文件传输速率?我正在使用 C#。

最佳答案

由于你无法控制流来告诉他读取了多少,你可以在流读取之前和之后添加时间戳,然后根据接收或发送的字节计算速度:

using System.IO;
using System.Net;
using System.Diagnostics;

// some code here...

Stopwatch stopwatch = new Stopwatch();

// Begining of the loop

int offset = 0;
stopwatch.Reset();
stopwatch.Start();

bytes[] buffer = new bytes[1024]; // 1 KB buffer
int actualReadBytes = myStream.Read(buffer, offset, buffer.Length);

// Now we have read 'actualReadBytes' bytes
// in 'stopWath.ElapsedMilliseconds' milliseconds.

stopwatch.Stop();
offset += actualReadBytes;
int speed = (actualReadBytes * 8) / stopwatch.ElapsedMilliseconds; // kbps

// End of the loop

您应该将 Stream.Read 放在 try/catch 中并处理读取异常。写入流和计算速度是一样的,只是这两行受到影响:

myStream.Write(buffer, 0, buffer.Length);
int speed = (buffer.Length * 8) / stopwatch.ElapsedMilliseconds; // kbps

关于c# - 使用 c# 测量 tcp 上的数据传输速率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4641733/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com