Пример #1
0
        public Universal[] Get(params Universal[] vbinds)
        {
            SnmpBER mess = new SnmpBER(SnmpType.Sequence,
                                       new Universal(0), // version-1
                                       new Universal(agentCommunity),
                                       PDU(SnmpType.GetRequestPDU, vbinds));
            MemoryStream m = new MemoryStream();

            mess.Send(m);
            byte[] bytes = m.ToArray();
            udp.Send(bytes, bytes.Length, agent);
            IPEndPoint   from   = new IPEndPoint(IPAddress.Any, 0);
            IAsyncResult result = udp.BeginReceive(null, this);

            result.AsyncWaitHandle.WaitOne(100, false);
            if (!result.IsCompleted)
            {
                return(null);
            }
            bytes = udp.EndReceive(result, ref from);
            m     = new MemoryStream(bytes, false);
            mess  = new SnmpBER(m);
            Universal pdu       = mess[2];
            Universal vbindlist = pdu[3];

            return((Universal[])vbindlist.Value);
        }
Пример #2
0
        public void Set(params Universal[] vbinds)
        {
            SnmpBER mess = new SnmpBER(SnmpType.Sequence,
                                       new Universal(0), // version-1
                                       new Universal(agentCommunity),
                                       PDU(SnmpType.SetRequestPDU, vbinds));
            MemoryStream m = new MemoryStream();

            mess.Send(m);
            byte[] bytes = m.ToArray();
            udp.Send(bytes, bytes.Length, agent);
        }
Пример #3
0
        public bool GetNext(ref Universal vbind)
        {
            SnmpBER mess = new SnmpBER(SnmpType.Sequence,
                                       new Universal(0), // version-1
                                       new Universal(agentCommunity),
                                       PDU(SnmpType.GetNextRequestPDU, vbind));
            MemoryStream m = new MemoryStream();

            mess.Send(m);
            byte[]    bytes = m.ToArray();
            IPAddress host  = Dns.GetHostEntry(agentAddress).AddressList[0];

            agent = new IPEndPoint(host, 161);
            udp.Send(bytes, bytes.Length, agent);
            IPEndPoint   from   = new IPEndPoint(IPAddress.Any, 0);
            IAsyncResult result = udp.BeginReceive(null, this);

            result.AsyncWaitHandle.WaitOne(100, false);
            if (!result.IsCompleted)
            {
                return(false);
            }
            bytes = udp.EndReceive(result, ref from);
            m     = new MemoryStream(bytes, false);
            mess  = new SnmpBER(m);
            Universal pdu = mess[2];

            if (((int)(X690.Integer)pdu[1].Value) != 0) // errorStatus
            {
                return(false);
            }
            Universal vbindlist = pdu[3];

            vbind = ((Universal[])vbindlist.Value)[0];
            return(true);
        }