该特定字段返回什么?我想要每秒接收的字节数。我应该依靠这个吗?
问问题
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
于 2012-11-27T07:53:55.383 回答
0
根据 MSDN(正如其他人也指出的那样),它获取在接口上接收到的字节数。
例如,如果网络接口断开并重新连接(例如,网络电缆被拔出或无线连接断开),它将如何表现。
如果您想要一种更可靠的方法来捕获数据包、过滤它们、剖析它们并只计算重要的数据包,那么请查看http://sourceforge.net/projects/sharppcap/
于 2012-11-27T08:26:33.263 回答