我正在用C#编写软件,通过SNMP编写或利用out或八位字节(字节)。我需要在1000秒内完成多少个字节传递?
根据我的研究,它的值有时会超时或重置,因为某些结果会产生负值。
对于 .139 中的输入流, .1.3.6.1.2.1.2.2.1.10
在1024秒内,它会得到-2 MB的结果。
如何准确测量流量(进出)?
编辑:我用这个代码进行计算。它取每秒的价值并得到结果。
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;
}
答案 0 :(得分:0)
1.3.6.1.2.1.2.2.1.10
是IF-MIB::ifInOctets
的OID,MIB为described为 Counter32 ,其上限为2 ^ 32-1(小数为4294967295) )。
“接口上收到的八位字节总数, 包括框架字符。
此计数器的值不连续可能发生在 重新初始化管理系统,在其他时候 由ifCounterDiscontinuityTime的值表示。“
一个Counter32没有定义的初始值,所以单个读数 Counter32没有信息内容。这就是为什么你必须拿两个 (或更多)读数以理解它。这方面的一个例子是 以太网接口收到的报文数。如果你拿一个 阅读并获取400万个数据包,你还没有学到任何东西: 过去可能已将电线拉出接口 一年,或者它可能每秒传递数百万个数据包。你有 采取多个读数来了解任何事情。
答案 1 :(得分:0)
我建议tutorial .1.3.6.1.2.1.31.1.1.1.6
和ifHCInOctets .1.3.6.1.2.1.31.1.1.1.10
这些是@ k1eran提到的64位OID版本
当处理更高的速度时,这些计数器不会旋转得那么快。