SNMP 可以使网络管理员通过一台工作站完成对计算机、路由器和其他网络设备的远程管理和监视。利用 SNMP 协议可以更好地管理和监控网络。管理工作站可以远程管理所有支持该协议的网络设备,如监视网络状态、修改网络设备配置、接收网络事件警告等。
要使用snmp需要开始本地snmp服务,和配置团体名称。
使用微软提供的snmp类库:SnmpSharpNet。
win10 开启snmp方法:https://wwr.lanzoui.com/iFzRht4xzkb
密码:euzt
底部附送C# 动态库
方法:
/// <summary>
/// snmp获取本地当前win电脑内存使用
/// 端口号161 团体名称:public
/// 注意电脑上要开启snmp服务
/// 获取数据具有延迟性,win的snmp机制所致
/// </summary>
/// <returns>返回系统物理内存使用(单位:G)</returns>
public static float GetUsePhysicalMemoryOfSNMP()
{
System.Net.IPAddress ipAdd = System.Net.IPAddress.Parse("127.0.0.1");
UdpTarget SnmpSender = new UdpTarget(ipAdd, 161, 2000, 1);
Pdu tempSendPdu = new Pdu(PduType.Get);
float memoryF = float.MinValue;
AgentParameters AgentParam = new AgentParameters(SnmpVersion.Ver2, new OctetString("public"));
string oidRoot = ".1.3.6.1.2.1.25.2.3.1.3.";
int idx = 1;
SnmpV2Packet result = null;
while (true)
{
if (idx > 1000)
{
return float.MinValue;
}
string curRepOid = oidRoot + idx;
tempSendPdu.VbList.Clear();
tempSendPdu.VbList.Add(curRepOid);
result = SnmpSender.Request(tempSendPdu, AgentParam) as SnmpV2Packet;
if (result != null && result.Pdu.ErrorIndex == 0)
{
string recVal = result.Pdu.VbList[0].Value.ToString();
if (recVal.ToLower().Replace(" ", "") == "physicalmemory")
{
break;
}
else
{
tempSendPdu.VbList.Clear();
idx++;
}
}
else
{
break;
}
}
string replayOID = "1.3.6.1.2.1.25.2.3.1.6." + idx;
tempSendPdu.VbList.Clear();
tempSendPdu.VbList.Add(replayOID);
result = SnmpSender.Request(tempSendPdu, AgentParam) as SnmpV2Packet;
if (result != null && result.Pdu.ErrorIndex == 0)
{
bool flag = float.TryParse(result.Pdu.VbList[0].Value.ToString(), out memoryF);
if (flag)
{
memoryF = memoryF * 65536 / 1024 / 1024 / 1024;
}
}
return memoryF;
}
C#引用库:https://wwr.lanzoui.com/iITfQt4xzlc
密码:4030