2012-02-11 7 views
0

私は失敗したvb.netでのFTPストリームのアップロード速度を取得しようとしているとのFTPアップロードの速度を取得し、私はGoogleで検索しました私はあなたが少し間違ってそれについてうとしていることを考える</p> <p>私は数学がOKかどうかわからないんだけど... 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 

答えて

3

:ここ

は私のコードです...しばらくの間、アップロードのための方程式を見つけようと、私はいくつかのコード例ではなく、ダウンロードのためにそれを発見しました。私は転送された合計バイト数を測定し、それを経過した合計秒数で割ることで、全体的な速度を計算するほうがよいと思う。例えば

、大体このような何か:

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 
+0

多くのおかげで、正しい数学はkbpsのを取得するために.ToString(2、(オフセット/ 1024)/期間)恐らくMath.roundました。 –

関連する問題