这是我的代码使用QuickSend方法来获取sysDesc是可以的但是使用Symbol Rate它总是失败。我不知道,相同的代码实际上在我之前写的另一个项目中工作(我再次运行它,一切都很好)。
var
mySNMP: TidSNMP;
SymbolRate, sysDesc: string;
begin
mySNMP:=TidSNMP.Create(nil);
try
mySNMP.Host:=Trim(IpEdit.Text);
mySNMP.Community:=Trim(CommEdit.Text);
mySNMP.ReceiveTimeout:=1000;
if mySNMP.QuickSend('1.3.6.1.2.1.1.1.0', mySNMP.Community, mySNMP.Host, sysDesc)
then
ShowMessage(sysDesc)
else
ShowMessage('Send Failed');
if mySNMP.QuickSend('.1.3.6.1.4.1.6247.24.1.2.2.12.0',mySNMP.Community, mySNMP.Host,SymbolRate)
then
ShowMessage('Send OK')
else
ShowMessage('Send Failed');
finally
mySNMP.Free;
end;
答案 0 :(得分:2)
QuickSend()
(以及SendQuery()
)将返回False:
套接字重置(报告错误代码10054,WSAECONNRESET
)。
在指定的超时时间内未收到任何响应。
无法解析响应。
解析响应包含来自服务器的错误代码(请参阅Reply.ErrorStatus
属性)。
我建议您首先从失败的OID中删除前导.
:
if mySNMP.QuickSend('1.3.6.1.4.1.6247.24.1.2.2.12.0',mySNMP.Community, mySNMP.Host,SymbolRate)
这样,它匹配earlier question中正在运行的查询代码:
SNMP.QuickSend('1.3.6.1.4.1.6247.24.1.2.2.12.0',SNMP.Community,SNMP.Host,SRate);