Indy SNMP QuickSend失败

时间:2014-05-30 09:05:29

标签: delphi snmp indy

这是我的代码使用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;

1 个答案:

答案 0 :(得分:2)

如果符合以下情况,

QuickSend()(以及SendQuery())将返回False:

  1. 套接字重置(报告错误代码10054,WSAECONNRESET)。

  2. 在指定的超时时间内未收到任何响应。

  3. 无法解析响应。

  4. 解析响应包含来自服务器的错误代码(请参阅Reply.ErrorStatus属性)。

  5. 我建议您首先从失败的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);