码迷,mamicode.com
首页 > 其他好文 > 详细

snmp4j 异步获取节点信息

时间:2017-07-21 17:09:41      阅读:176      评论:0      收藏:0      [点我收藏+]

标签:countdown   技术分享   tran   eric   cad   stat   add   结果   ppi   

1. 主要代码如下:

public class ResponseListenerTest {
    public static void main(String[] args) throws IOException, InterruptedException {
        Snmp snmp = new Snmp(new DefaultUdpTransportMapping());
        snmp.listen();
        
        CommunityTarget target = new CommunityTarget();
        target.setCommunity(new OctetString("public"));
        target.setAddress(GenericAddress.parse("udp:192.168.100.61/161"));
        target.setRetries(1);
        target.setTimeout(2000);
        target.setVersion(SnmpConstants.version1);
        
        
        PDU pdu = new PDU();
        pdu.add(new VariableBinding(new OID("1.3.6.1.2.1.1.3.0")));
        pdu.setType(PDU.GET);
        
        ResponseListener listener = new ResponseListener() {
            @Override
            public void onResponse(ResponseEvent event) {
                PDU resp = event.getResponse();
                VariableBinding vb = resp.get(0);
                System.out.println(vb.getOid().toString() + "^^^^" + vb.getVariable());
            }
        };
        CountDownLatch latch = new CountDownLatch(1);
        snmp.get(pdu, target, null, listener);
        latch.await(2, TimeUnit.SECONDS);
    }
}

2. 运行结果如下:

技术分享

3. 在上面的例子中,也可以使用线程的方式处理:

技术分享

但是需要注意的是:sleep的时间要小于 setTimeout 的时间,否则会出现异常。

 4. 其中:

  target.setTimeout(2000); // 意思为:当发送请求后 2秒钟没有返回响应信息,表示已经超时了。
  target.setRetries(1);   // 意思为:当上面的逻辑超时后,再次发送请求的次数,为1次。
 

snmp4j 异步获取节点信息

标签:countdown   技术分享   tran   eric   cad   stat   add   结果   ppi   

原文地址:http://www.cnblogs.com/beibidewomen/p/7218248.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!