現在のダウンロード速度を取得できるクラスやライブラリなどを探しています。FreeMeterを含むネットから多くのコードを試しましたが、動作しません。
この単純な機能を提供するためだけに、任意の種類のコードを提供できるものもありますか。
どうもありがとう
現在のダウンロード速度を取得できるクラスやライブラリなどを探しています。FreeMeterを含むネットから多くのコードを試しましたが、動作しません。
この単純な機能を提供するためだけに、任意の種類のコードを提供できるものもありますか。
どうもありがとう
kb/秒が欲しいと思います。kbreceived
これは、現在の秒から開始秒を引いたもので割ることによって決定されます。C#でこれを行うためのDateTimeの方法はわかりませんが、VC++では次のようになります。
COleDateTimeSpan dlElapsed = COleDateTime::GetCurrentTime()
- dlStart;
secs = dlElapsed.GetTotalSeconds();
次に、分割します。
double kbsec = kbreceived / secs;
を取得するには、読み取りを行い、すでに読み取られたバイトを追加してから、1024で除算するkbreceived
必要があります。currentBytes
それで、
// chunk size 512.. could be higher up to you
while (int bytesread = file->Read(charBuf, 512))
{
currentbytes = currentbytes + bytesread;
// Set progress position by setting pos to currentbytes
}
int percent = currentbytes * 100 / x ( our file size integer
from above);
int kbreceived = currentbytes / 1024;
いくつかの実装固有の関数を除いて、基本的な概念は言語に関係なく同じです。
現在のダウンロードとアップロードの速度が必要な場合は、次の方法があります。
間隔1秒のタイマーを作成します。その間隔で更新する場合は、選択します。タイマーのチェックマークに、次のコードを追加します。
using System.Net.NetworkInformation;
int previousbytessend = 0;
int previousbytesreceived = 0;
int downloadspeed;
int uploadspeed;
IPv4InterfaceStatistics interfaceStats;
private void timer1_Tick(object sender, EventArgs e)
{
//Must Initialize it each second to update values;
interfaceStats = NetworkInterface.GetAllNetworkInterfaces()[0].GetIPv4Statistics();
//SPEED = MAGNITUDE / TIME ; HERE, TIME = 1 second Hence :
uploadspeed = (interfaceStats.BytesSent - previousbytessend) / 1024; //In KB/s
downloadspeed = (interfaceStats.BytesReceived - previousbytesreceived) / 1024;
previousbytessend= NetworkInterface.GetAllNetworkInterfaces()[0].GetIPv4Statistics().BytesSent;
previousbytesreceived= NetworkInterface.GetAllNetworkInterfaces()[0].GetIPv4Statistics().BytesReceived;
downloadspeedlabel.Text = Math.Round(downloadspeed, 2) + " KB/s"; //Rounding to 2 decimal places
uploadspeedlabel.Text = Math.Round(uploadspeed, 2) + "KB/s";
}
私はそれがそれを解決すると思います。タイマーの時間間隔が異なる場合は、指定した時間をMAGNITUDEで除算してください。