Получите скорость загрузки ftp с vb.net - PullRequest
0 голосов
/ 12 февраля 2012

Я пытаюсь получить скорость загрузки потока ftp с vb.net безуспешно ...

Я не уверен, что с математикой все в порядке, я некоторое время гуглил, пытаясь найтиуравнение для загрузки, и я нашел его в некоторых примерах кода, но для загрузки ...

Вот мой код:

Dim chunksize As Integer = 2048
Dim offset As Long = 0
Dim readBytes As Long = 0

Dim startTime As DateTime
Dim endTime As DateTime

While offset < buffer.Length
    readBytes = fileStream.Read(buffer, 0, chunksize)
    requestStream.Write(buffer, 0, readBytes)
    offset += readBytes

    endTime = DateTime.Now
    Dim duration = endTime - startTime
    Dim inASec As Double = 1000 / duration.Milliseconds
    startTime = DateTime.Now

    RaiseEvent FileSpeed(Math.Round((64 * inASec) / 8, 2).ToString)

    RaiseEvent FileProgress(offset, buffer.Length)
End While

1 Ответ

3 голосов
/ 12 февраля 2012

Я думаю, что вы делаете это немного неправильно. Я думаю, что вам повезет, если вы подсчитаете общую скорость, измерив общее число переданных байтов, а затем разделите их на общее количество прошедших секунд.

Например, что-то вроде этого:

    Dim chunksize As Integer = 2048
    Dim offset As Long = 0
    Dim readBytes As Long = 0

    Dim startTime As DateTime
    Dim duration As Double

    startTime = DateTime.Now

    While offset < Buffer.Length
        readBytes = fileStream.Read(Buffer, 0, chunksize)
        requestStream.Write(Buffer, 0, readBytes)
        offset += readBytes

        duration = startTime.Subtract(Date.Now).TotalSeconds
        ' Avoid divide by 0 errors
        If duration = 0 Then
            duration = 1
        End If

        RaiseEvent FileSpeed(Math.Round(offset / duration, 2).ToString)

        RaiseEvent FileProgress(offset, Buffer.Length)
    End While
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...