その特定のフィールドは何を返しますか? 1 秒あたりの受信バイト数が必要です。これに頼るべきですか?
質問する
8533 次
3 に答える
9
私はあなたがそれをそのように使うことができると思います:
long beginValue = NetworkInterface.GetIPv4Statistics().BytesReceived;
DateTime beginTime = DateTime.Now;
// do something
long endValue = NetworkInterface.GetIPv4Statistics().BytesReceived;
DateTime endTime = DateTime.Now;
long recievedBytes = endValue - beginValue;
double totalSeconds = (endTime - beginTime).TotalSeconds;
var bytesPerSecond = recievedBytes / totalSeconds;
定期的に更新するためのコードスニペット
private object _lockObj;
private long bytesPerSecond = 0;
private Timer _refreshTimer = new Timer { Interval = 1000 };
// do in ctor or some init method
_refreshTimer.Tick += _refreshTimer_Tick;
_refreshTimer.Enabled = true;
private void _refreshTimer_Tick(object sender, EventArgs e)
{
ThreadPool.QueueUserItem(callback =>
{
long beginValue = NetworkInterface.GetIPv4Statistics().BytesReceived;
DateTime beginTime = DateTime.Now;
Thread.Sleep(1000);
long endValue = NetworkInterface.GetIPv4Statistics().BytesReceived;
DateTime endTime = DateTime.Now;
long recievedBytes = endValue - beginValue;
double totalSeconds = (endTime - beginTime).TotalSeconds;
lock(_lockObj)
{
bytesPerSecond = recievedBytes / totalSeconds;
}
});
}
これをいくつかの追跡と組み合わせて、受信したバイトを経時的に記録することができます
于 2012-11-27T07:58:55.773 に答える
4
NetworkInterface.GetIPv4Statistics().BytesReceived
特定のインターフェイスで受信した合計バイト数が表示されます。
これを正確に使用して、1秒あたりの受信バイト数を取得できるとは思いません。
これをチェック
于 2012-11-27T07:53:55.383 に答える
0
MSDNによると(他の人も指摘しているように)、インターフェイスで受信したバイト数を取得します。
たとえば、ネットワーク インターフェイスが切断されて再接続された場合 (たとえば、ネットワーク ケーブルが引き抜かれたり、ワイヤレス接続が切断されたりした場合)、どのように動作しますか。
パケットをキャプチャし、フィルタリングし、分析し、重要なものだけをカウントする、より信頼性の高い方法が必要な場合は、http://sourceforge.net/projects/sharppcap/をご覧ください。
于 2012-11-27T08:26:33.263 に答える