Network programming SNMP输出或输入八位字节(网络流量)

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) {

我正在用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)
        {
            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


在处理更高的速度时,这些计数器的旋转速度不太快。

查看新代码可能是一个与原始代码不同的问题和答案;它可能会在自己的新问题中更加清晰(包括输入和实际/预期结果)。