C# SNMP 陷阱接收器

标签 c# .net snmp

我需要捕获 SNMP 并完成了以下代码,我正确获取数据,但 objectID 出现乱码,这有什么原因吗

       int port=162;
         UdpClient listener;
        IPEndPoint groupEP;
        byte[] packet = new byte[1024];
        int commlength, miblength, datatype, datalength, datastart, Objecttype, Objectlength;
        int objectstart;
        string objectid;

        string output;

        Console.WriteLine("Initializing SNMP Listener on Port:" + port + "...");

       // try
       // {
            listener = new UdpClient(port);
            groupEP = new IPEndPoint(IPAddress.Any, port);

            while (true)
            {
                Console.WriteLine("Waiting for messages....");
                packet = listener.Receive(ref groupEP);
                Console.WriteLine("Processing new message...");
                if (packet.Length != null)
                {
                Console.Out.WriteLine("New message from {0} :\n {1}\n", groupEP.ToString(), packet);
                if (packet[0] == 0xff)
                {
                    Console.WriteLine("Invalid Packet");
                    return;
                    }

                commlength = Convert.ToInt16(packet[6]);
               miblength = Convert.ToInt16(packet[10 + commlength]);

               Objecttype = Convert.ToInt16(packet[30 + commlength + miblength]);
                Objectlength = Convert.ToInt16(packet[31 + commlength + miblength]);
                objectstart = 32 + commlength + miblength;
                datatype = Convert.ToInt16(packet[26+ Objecttype + Objectlength+commlength+ miblength]);
                datalength = Convert.ToInt16(packet[27 + Objecttype + Objectlength + commlength + miblength]);
                datastart = 28 + Objecttype + Objectlength + commlength + miblength;
                    output = Encoding.ASCII.GetString(packet, datastart, datalength);
                    objectid = Encoding.ASCII.GetString(packet, objectstart , Objectlength);
                Console.WriteLine("sysLocation - Datatype: {0}, Value: {1}", datatype,output);
                Console.WriteLine(objectid);


                }


            }

数据存储为十六进制字符串,objectid 的存储方式是否与包含“.”的方式相同 我知道我可以使用现有的库(可以在网上免费获得),但我刚刚为自己创造了一个学习的机会。

请指教。

最佳答案

看看这个 SNMP 库 http://sourceforge.net/projects/snmpsharpnet/files/ .

你不必重新发明轮子

关于C# SNMP 陷阱接收器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17347597/

相关文章:

c# - Html 邮件中的字体

c# - Task.ContinueWith 是否捕获调用线程上下文以继续?

javascript - 从客户端验证 C# 中具有数十个属性的对象更改的任何属性

.net - list 文件如何在 .NET 应用程序中工作?

c# - 为什么C#有一个单独的重新抛出语句( throw; )而不是重载 throw ex ?

.net - (VB).NET 中的 ":= "运算符是什么或者它有什么用?

c# - 库中的异常处理策略

java - 如何将SNMP与spring框架集成?

javascript - 正确嵌套 Redis 回调

python-3.x - 使用 PySNMP 的 snmpwalk