解决方案 »

  1.   

    主要代码是这样的,当查询成功时,按理论来说应该返回一条
    System.out.println("Received response "+response+" on request "+request);
    的内容就行了。可是它还多一条
    System.out.println("Request "+request+" timed out");
    也就是说如果返回成功,会onResponse两次。第一次成功,第二次超时。?????

                            Snmp snmp = new Snmp(new DefaultUdpTransportMapping());
    snmp.listen();
    ResponseListener listener = new ResponseListener() {
    public void onResponse(ResponseEvent event) {
    PDU response = event.getResponse();
    PDU request = event.getRequest();
    if (response == null) {
    System.out.println("Request "+request+" timed out");
    }
    else {
    System.out.println("Received response "+response+" on request "+request);
    }
    }
    };
    CommunityTarget target = new CommunityTarget();
    target.setCommunity(new OctetString("public"));
    target.setAddress((new UdpAddress()).parse("127.0.0.1/161"));
    target.setVersion(SnmpConstants.version1);
    PDU pdu = new PDU();
    pdu.add(new VariableBinding(new OID("1.3.6.1.2.1.1.1"))); // sysDescr
    pdu.setType(PDU.GETNEXT);
    snmp.sendPDU(pdu, target, null, listener);
    while (true){}