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); }
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); }
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); }