Network programming SNMP输出或输入八位字节(网络流量)
我正在用C#编写软件,通过SNMP测量或利用输出或八位字节(字节)。我需要在1000秒内传递多少字节 根据我的研究,它的值有时会超时或重置,因为有些结果会给出负值Network programming SNMP输出或输入八位字节(网络流量),network-programming,snmp,Network Programming,Snmp,我正在用C#编写软件,通过SNMP测量或利用输出或八位字节(字节)。我需要在1000秒内传递多少字节 根据我的研究,它的值有时会超时或重置,因为有些结果会给出负值 .1.3.6.1.2.1.2.2.1.10用于.139中的输入流 在1024秒内,它给出了-2,1兆字节的结果 如何准确测量(进出)交通量 编辑:这是我用于计算的代码。它在everysec中获取值并得到结果 private void timer1_Tick(object sender, EventArgs e) {
.1.3.6.1.2.1.2.2.1.10
用于.139中的输入流
在1024秒内,它给出了-2,1兆字节的结果
如何准确测量(进出)交通量
编辑:这是我用于计算的代码。它在everysec中获取值并得到结果
private void timer1_Tick(object sender, EventArgs e)
{
Cursor.Current = Cursors.WaitCursor;
SnmpObject objSnmpObject, objSnmpIfSpeed;
objSnmpObject = (SnmpObject)objSnmpManager.Get(".1.3.6.1.2.1.2.2.1.16.139");
objSnmpIfSpeed = (SnmpObject)objSnmpManager.Get(".1.3.6.1.2.1.2.2.1.5.139");
if (GetResult() == 0)
{
float value = Int64.Parse(objSnmpObject.Value);
float ifSpeed = Int64.Parse(objSnmpIfSpeed.Value);
float Bytes = (value * 8 * 100 / ifSpeed);
// float megaBytes = Bytes / 1024;
sum += Bytes;
tb_calc.Text = (sum.ToString() + " Bytes");
}
_gv_timeSec++;
lb_timer.Text = _gv_timeSec.ToString();
Cursor.Current = Cursors.Default;
}
1.3.6.1.2.1.2.2.1.10
是IF-MIB::IFinocts
的OID,MIB将其作为计数器32,其上限为2^32-1(4294967295十进制)
“接口上接收的八位字节总数,
包括框架字符
此计数器值的不连续性可能发生在以下位置:
管理系统的重新初始化,以及
由IFYTime的值指示。“
引述:
计数器32没有定义的初始值,因此
计数器32没有信息内容。这就是为什么你必须拿两个
(或更多)阅读来理解它。这方面的一个例子是
在以太网接口上接收的数据包数。如果你采取行动
阅读并取回400万包,您还没有学到任何东西:
电线可能在过去被从接口中拔出
一年,或者它可能每秒传递数百万个数据包。你有
通过多次阅读来了解任何事情
我推荐.1.3.6.1.2.1.31.1.1.6
和.1.3.6.1.2.1.31.1.1.10
,它们是@k1eran提到的64位版本的OID
在处理更高的速度时,这些计数器的旋转速度不太快。查看新代码可能是一个与原始代码不同的问题和答案;它可能会在自己的新问题中更加清晰(包括输入和实际/预期结果)。