Я пытаюсь написать свой первый клиент snmp4j.У меня есть агент, работающий на 192.168.60.105.Используя net-snmp, я могу запросить OID и получить результат.При использовании smnp4j событие ответа для получения snmp возвращается с нулевым ответом и нулевой ошибкой.Я думаю, что сообщение истекло, но я не знаю почему.
Я получаю результат, используя net-snmp
jgaer@ljgaer2_~: snmpget 192.168.60.105 .1.3.6.1.4.1.27675.20.5.2.0
CW-NET-STG-SVR-MIB::cwNetStgSvrProvisioningEnable.0 = Hex-STRING: 00 00 00 00
Я пытался использовать более длительное время ожидания и большее числоповторов, и это займет больше времени, чтобы вернуться.Вот почему я думаю, что время истекло.Я просто не понимаю почему.Я также ожидал бы, что если responseEvent возвращается по таймауту, ошибка будет указывать на это.Я пытался использовать verions1.Для использования версии 3 требуется PDU с областью действия.
public static void main(String[] args) throws IOException {
String address = ("udp:192.168.60.105/161");
TransportMapping transport = new DefaultUdpTransportMapping();
Snmp snmp = new Snmp(transport);
transport.listen();
PDU pdu = new PDU();
pdu.setType(PDU.GET);
pdu.add(new VariableBinding(new OID(".1.3.6.1.4.1.27675.20.5.2.0")));
Address targetAddress = GenericAddress.parse(address);
CommunityTarget target = new CommunityTarget();
target.setCommunity(new OctetString("public"));
target.setAddress(targetAddress);
target.setRetries(2);
target.setTimeout(1500);
target.setVersion(SnmpConstants.version2c);
ResponseEvent response = snmp.send(pdu,target);
System.out.println(response);
System.out.println(response.getResponse());
System.out.println(response.getError());
}
в результате выполнения вышеуказанного кода
org.snmp4j.event.ResponseEvent[source=org.snmp4j.Snmp@3f91beef]
null
null
Я ожидаю, что либо ошибка, либо ответ будут ненулевыми.Я использую Java-версию Java версии "1.8.0_191" и snmp4j версии 2.5.0.Агент работает 2.5.3
Я проследил пакеты, используя wireshark, и могу подтвердить, что я никогда не получаю ответ от агента, использующего snmp4j. Я не совсем понимаю достаточно протокола, чтобы сделать байтсравнение байтов, но информационный столбец для вызова net-snmp сильно отличается от вызовов snmp4j.
net-snmp
length info
106 get-request : sent from client to agent
159 report 1.3.6.1.6.3.15.1.1.4.0 : sent from agent to client
192 encryptedPDI : privKey unknown : sent from client to agent
196 encryptedPDI : privKey unknown : sent from agent to client
snmp4j - ответ никогда не получал три сообщения от клиента агенту
89 get-request 1.3.6.1.4.1.27675.20.5.2.0 sent from client to agent
Глядя на текстовую версию байтов, я вижу строку 'public'