NetworkInterface.GetIPv4Statistics().BytesReceived - 它返回什么?

soh*_*ham 3 .net c# ip networking

该特定领域的回报是什么?我想要每秒接收的字节数.我应该依靠这个吗?

Ver*_*rni 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;
Run Code Online (Sandbox Code Playgroud)

用于定期更新的代码段

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;
    }
  });

}
Run Code Online (Sandbox Code Playgroud)

您可以将此与一些跟踪相结合,以记录随时间变化的接收字节