gpt4 book ai didi

c# - 如何计算传输速率speed kb/s SOCKETS c#

转载 作者:可可西里 更新时间:2023-11-01 02:34:35 25 4
gpt4 key购买 nike

如何计算以千字节每秒为单位的传输速率,我使用了秒表但它不起作用,因为它给我一个关于 div 为零的错误 (count/0)

    public void sendFile(string filePath)
{
Stopwatch stopWatch = new Stopwatch();
FileInfo file = new FileInfo(filePath);
try
{
int fileSize = (int)file.Length;
Program.mainForm.MaxProgressBarHandler(fileSize);
byte[] fileDetial;
string detail = file.Name + "," + fileSize.ToString();
fileDetial = Encoding.ASCII.GetBytes(detail);
client.Send(fileDetial);
byte[] fileData = new byte[fileSize];

int count;
int sum = 0;
file.OpenRead().Read(fileData, 0, fileSize);
while (sum < fileSize)
{
stopWatch.Restart();
if (fileSize - sum < packetSize)
{
count = client.Send(fileData, sum, fileSize - sum, SocketFlags.None);
Program.mainForm.UpdateProgressBarHandler(count);
}
else
{
count = client.Send(fileData, sum, packetSize, SocketFlags.None);
Program.mainForm.UpdateProgressBarHandler(count);
}
stopWatch.Stop();
sum += count;
Program.mainForm.AppendLabel(((fileSize * 8) / stopWatch.ElapsedMilliseconds).ToString());
Console.WriteLine(sum + "of" + fileSize + "sent");
}
}
finally
{
Console.WriteLine("sent");
CloseClient();
}
}

请帮帮我 =)

最佳答案

对于您问题的第一部分,请查看此 Joel On Software Forum Thread .它不是专门与 .Net 相关,而是直接处理使用 TCP 传输文件。

至于第二部分,因为我没有你的完整代码,所以我无法理解为什么你的 stopWatch.ElapsedMilliseconds 等于零。我的猜测是没有要传输的数据。您可以尝试做这样的事情来避免被零除错误。

if (stopWatch.ElapsedMilliseconds != 0)
Program.mainForm.AppendLabel(((fileSize * 8) / stopWatch.ElapsedMilliseconds).ToString());

尽管我可能会有一个 1 秒的计时器并使 sum 成为一个类范围变量并每秒更新一次标签,即:

public partial class Form1 : Form
{
int sum = 0;
int seconds = 0;
...

private void timer1_Tick(object sender, EventArgs e)
{
seconds += 1;
Program.mainForm.AppendLabel(((sum * 8) / seconds).ToString());
}

并在您完成传输后重置它们。

....
finally
{
timer1.Stop();
sum = 0;
seconds = 0
Console.WriteLine("sent");
CloseClient();
}

关于c# - 如何计算传输速率speed kb/s SOCKETS c#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8874175/

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