我尝试使用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。不确定这是否有助于弄清楚最新情况?