Delphi Indy SNMP QuickSend失败

Delphi Indy SNMP QuickSend失败,delphi,snmp,indy,Delphi,Snmp,Indy,这是我的代码使用QuickSend方法获取sysDesc是可以的,但使用符号速率它总是失败。我不知道,同样的代码实际上在我以前写的另一个项目中工作(我再次运行它,一切都很好) QuickSend()(通常是SendQuery())在以下情况下返回False: 套接字被重置(它报告错误代码10054,WSAECONNRESET) 在指定的超时内未收到响应 无法分析响应 解析响应时包含来自服务器的错误代码(请参阅Reply.ErrorStatus属性) 我建议您首先从失败的OID中删除前导的: if

这是我的代码使用QuickSend方法获取sysDesc是可以的,但使用符号速率它总是失败。我不知道,同样的代码实际上在我以前写的另一个项目中工作(我再次运行它,一切都很好)

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)
    
    通过这种方式,它与您的中的查询代码匹配,该代码正在工作:

    SNMP.QuickSend('1.3.6.1.4.1.6247.24.1.2.2.12.0',SNMP.Community,SNMP.Host,SRate);
    

    我认为这是因为我将OID放在一个常量字符串“IDSymbolRate”中,并且我认为它是正确的,因为它是从MIB浏览器复制的。如果我没有直接重写OID,那么检测错误将更加困难。
    SNMP.QuickSend('1.3.6.1.4.1.6247.24.1.2.2.12.0',SNMP.Community,SNMP.Host,SRate);