带freepascal的Indy snmp
我正在raspberry pi上使用indy和freepascal制作一个简单的snmp应用程序。 我可以ping到设备并通过mibbrowser发送get/set请求,但这不起作用,发送查询总是失败带freepascal的Indy snmp,snmp,indy,freepascal,Snmp,Indy,Freepascal,我正在raspberry pi上使用indy和freepascal制作一个简单的snmp应用程序。 我可以ping到设备并通过mibbrowser发送get/set请求,但这不起作用,发送查询总是失败 program snmptest; {$IFDEF FPC} {$MODE DELPHI} {$ENDIF} uses sysutils, IdSNMP, IdUDPBase, IdUDPClient; var snmp:tidsnmp; s,mib:string; begi
program snmptest;
{$IFDEF FPC}
{$MODE DELPHI}
{$ENDIF}
uses
sysutils, IdSNMP, IdUDPBase, IdUDPClient;
var
snmp:tidsnmp;
s,mib:string;
begin
mib:='1.3.6.1.4.1.6247.32.1.2.12.0';
snmp:=tidsnmp.create(nil);
try
snmp.host:='172.16.1.222';
snmp.community:='public';
snmp.query.clear;
snmp.query.pdutype:=pdugetrequest;
snmp.query.mibadd(mib,'');
if snmp.sendquery then
begin
s:=snmp.reply.mibget(mib);
writeln(s);
end
else begin
writeln('fail!');
end;
finally
snmp.free;
end;
end.
谢谢分享代码,不过你应该直接粘贴到问题中,而不是链接它。你也可以分享运行程序的输出吗?只有失败,没有更多。如果FPC v2.6.0.TIDSMPN.SendQuery在等待答复到达时超时,则返回false。默认的TIDSMPN.ReceiveTimeout为5秒,或者如果它无法解析答复。如果看不到实际的网络流量,我们就无法诊断这个问题。你必须亲自进入Indy的源代码,看看到底发生了什么。SendQuery退出后,TIdSNMP.Reply.ErrorStatus的值是多少?您是否尝试过使用数据包嗅探器来比较TIDSMP的流量和MibBrowser的流量?ErrorStatus=2没有这样的名称。有线鲨鱼:嗯,那就很明确了。NoSochName表示SNMP代理没有该OID。您需要了解代理实际支持哪些OID。我建议使用SNMPwalk命令netsnmp或MIB浏览器来查找正确的OID。