Indy SNMP和C ++ Builder XE3

时间:2018-02-14 01:12:23

标签: c++ c++builder snmp indy

我尝试使用Indy SNMP组件,但遇到了问题

以下代码

try
{
    TIdSNMP* client         = new TIdSNMP();
    String host     = "192.168.123.123";
    String mib      = "1.3.6.1.2.1.1.5.0";
    Log(lInfo) << "Test simple SNMP call on server: " << host;
    client->Host           = host;
    client->BoundIP        = "192.168.123.1";
    client->Community      = "public";
    client->ReceiveTimeout = 1000;

    client->Query->Clear();
    client->Query->PDUType = PDUGetRequest;
    client->Query->MIBAdd(mib,"");

    if (client->SendQuery()) 

      //...
    }
    else
    {
        Log(lInfo) << "*** Query not sent *** ";
    }
  delete client;
}
catch (const Exception & ex)
{
    Log(lInfo) << Mylog(L"ERROR [%s] ", ex.Message.c_str());
}

在SendQuery行上继续返回false,而在终端中使用snmpget客户端会得到正确的结果

>/Users/matsk:\> snmpget -v 2c -c public 192.168.123.123  1.3.6.1.2.1.1.5.0
SNMPv2-MIB::sysName.0 = STRING: Watchdog 15

,其中

SNMPv2-MIB::sysName.0 = STRING: Watchdog 15

是来自温度测量设备的预期返回字符串。 或使用版本1

>/Users/matsk:\> snmpget -v 1 -c public 192.168.123.123  1.3.6.1.2.1.1.5.0
SNMPv2-MIB::sysName.0 = STRING: Watchdog 15

我应该补充一个问题,即设备是否使用以太网连接到本地计算机 - &gt; USB加密狗和不同的子网&#39;比我常规的互联网连接。我不确定这是否会增加Indy的行为?

按照Remy L的建议,为相关的以太网适配器执行ipconfig / all。

以太网适配器以太网2:

Connection-specific DNS Suffix  . :
Description . . . . . . . . . . . : Linksys USB3GIGV1
Physical Address. . . . . . . . . : 94-10-3E-B7-D7-0A
DHCP Enabled. . . . . . . . . . . : No
Autoconfiguration Enabled . . . . : Yes
Link-local IPv6 Address . . . . . : fe80::bc9f:3659:9f91:2627%24(Preferred)
IPv4 Address. . . . . . . . . . . : 192.168.123.1(Preferred)
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . :
DHCPv6 IAID . . . . . . . . . . . : 412356670
DHCPv6 Client DUID. . . . . . . . : 00-01-00-01-21-70-32-91-D8-CB-8A-BC-E5-B
DNS Servers . . . . . . . . . . . : fec0:0:0:ffff::1%1
                                   fec0:0:0:ffff::2%1
                                   fec0:0:0:ffff::3%1
NetBIOS over Tcpip. . . . . . . . : Enabled

我使用的是BoundIP = 192.168.123.1

但是,SendQuery()仍然返回false。

我从这篇文章中复制了一些代码: Indi TIdSNMP : How use SendQuery

使用Wireshark和过滤器提供一行

63  47.723731   192.168.123.1   192.168.123.123 SNMP    82  get-request 1.3.6.1.2.1.1.5.0

有趣的是,当使用snmpget我得到

476 182.830210  192.168.123.1   192.168.123.123 SNMP    83  get-request 1.3.6.1.2.1.1.5.0

唯一的区别是长度记录为83,而不是使用Indy的请求为82。不确定这是否有助于弄清楚最新情况?

0 个答案:

没有答案