首页 > 代码库 > snmp4j 异步获取节点信息
snmp4j 异步获取节点信息
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 异步获取节点信息
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。