Как рассчитать скорость передачи в килобайте в секунду, я использовал секундомер, но он не работает, потому что он дает мне ошибку о div на ноль (count/0)как рассчитать скорость передачи kb/s SOCKETS C#
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();
}
}
Пожалуйста, помогите мне =)
В любом случае, вместо того, чтобы перематывать свою собственную петлю, вы можете просто использовать метод SendFile. Это, вероятно, будет использовать TransmitFile Win32API под таким, что вам никогда не придется извлекать буферы из пространства ядра. http://msdn.microsoft.com/en-us/library/sx0a40c2.aspx – selbie
Если это не закодированная ненулевая константа, вы должны ВСЕГДА проверять переменную знаменателя на «0» перед делением. – selbie
mr selbie .. Я уже проверил эту ссылку раньше .. но у меня нет получателя, чтобы обрабатывать ее с другой стороны, и так как я не знаю, как работает SendFile, и я не получаю правильно, плюс я хочу поймать отправленные байты и показать они в progressBar .. что вы посоветуете мне делать? –