Simple SNMP Query Tool - Open Source - C# (C-sharp)
SNMP communication module
// Author: Toomas Kaljus
// http://www.digigrupp.com
namespace DG
{
public class SNMPSocket
{
public int SocketTimeout = 5000; // default to 3 seconds
private System.Net.Sockets.Socket Socket;
private System.Net.IPEndPoint IPEndPoint;
public System.Net.EndPoint EndPoint;
private string HostAddress;
~SNMPSocket()
{
if (Socket != null) Socket.Close();
}
public SNMPPacket Send(string Host, SNMPPacket SNMP)
{
// Resolve IP address (do it only once)
if (HostAddress != Host)
{
#if NET20
System.Net.IPAddress[] IPAddress = System.Net.Dns.GetHostAddresses(Host);
IPEndPoint = new System.Net.IPEndPoint(IPAddress[0], 161);
#else
System.Net.IPHostEntry IPHostEntry = System.Net.Dns.Resolve(Host);
IPEndPoint = new System.Net.IPEndPoint(IPHostEntry.AddressList[0], 161);
#endif
EndPoint = (System.Net.EndPoint)IPEndPoint;
HostAddress = Host;
}
// Create and initialize the socket (do it only once)
if (Socket == null)
{
Socket = new System.Net.Sockets.Socket(System.Net.Sockets.AddressFamily.InterNetwork, System.Net.Sockets.SocketType.Dgram, System.Net.Sockets.ProtocolType.Udp);
Socket.SetSocketOption(System.Net.Sockets.SocketOptionLevel.Socket, System.Net.Sockets.SocketOptionName.SendTimeout, SocketTimeout);
Socket.SetSocketOption(System.Net.Sockets.SocketOptionLevel.Socket, System.Net.Sockets.SocketOptionName.ReceiveTimeout, SocketTimeout);
}
Socket.SendTo(SNMP.GetBytes(), IPEndPoint);
byte[] Packet = new byte[10240];
int ReceivedLenght = Socket.ReceiveFrom(Packet, ref EndPoint);
SNMP = new SNMPPacket(ref Packet);
return SNMP;
}
}
}