C# 计算套接字c中传输文件的速度#
我做了很多研究,找到了一种计算方法,但我不相信C# 计算套接字c中传输文件的速度#,c#,performance,sockets,C#,Performance,Sockets,我做了很多研究,找到了一种计算方法,但我不相信 请帮我修一下好吗??:( 这是我的密码 while (sum < length) { stopWatch.Restart(); if (length - sum > packetSize) { count = fileStream.Read(buffer, 0, packetSize); Send(socket_File, buffer); } else {
请帮我修一下好吗??:(
这是我的密码
while (sum < length)
{
stopWatch.Restart();
if (length - sum > packetSize)
{
count = fileStream.Read(buffer, 0, packetSize);
Send(socket_File, buffer);
}
else
{
buffer = new byte[length - sum];
count = fileStream.Read(buffer, 0, length - sum);
Send(socket_File, buffer);
}
stopWatch.Stop();
sum = sum + count;
SendFile.Downloaded = sum;
SendFile.Transfer_rate = ((sum * 8) / stopWatch.ElapsedMilliseconds).ToString();//kbps
}
while(总和<长度)
{
stopWatch.Restart();
if(长度-总和>包装尺寸)
{
count=fileStream.Read(缓冲区,0,packetSize);
发送(套接字文件、缓冲区);
}
其他的
{
缓冲区=新字节[长度-总和];
count=fileStream.Read(缓冲区,0,长度-总和);
发送(套接字文件、缓冲区);
}
秒表;
总和=总和+计数;
SendFile.Downloaded=sum;
SendFile.Transfer_rate=((总和*8)/stopWatch.elapsedmillisons.ToString();//kbps
}
一些随机点:
- 您可能希望在循环之外采样时钟,而不是在每次迭代中
- 一些文件读取时间也包括在您的计算中
- 您正在测量将字节放入OS套接字缓冲区的时间,而不是实际传输的时间
if (length - sum > packetSize)
{
count = fileStream.Read(buffer, 0, packetSize);
}
else
{
count = fileStream.Read(buffer, 0, length - sum);
}
Send(socket_File, buffer, count);
当然,秒表的启动和停止以及打印输出应该在循环之外,否则您只是在为单个读/写对计时。@motaz99在所有问题中,您只需说“帮助我解决它”。最好实际告诉我们什么不起作用以及您的期望值。@usr我不知道此方法是否正确,如果不正确,我想更正它。@motaz99那么您要求我们做您的家庭作业。我们不是来为您提供完整的解决方案的。我们帮助您解决特定问题。@motaz99什么是“显示速度”?您的代码中没有任何内容。只要有些行计算不正确。