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

2024-01-24

该特定字段返回什么?我想要每秒接收的字节数。我应该依赖这个吗?


我认为你可以这样使用它:

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

}

您可以将其与一些跟踪结合起来,以记录一段时间内接收到的字节数

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NetworkInterface.GetIPv4Statistics().BytesReceived - 它返回什么? 的相关文章

随机推荐