SNMP4J源码主要类解析

主要几个类

org.snmp4j.Snmp

这是最主要的一个类,无论实现设备监听器还是发送接收设备报文,都需要先创建这个对象。有listen(),get(),send()等方法

org.snmp4j.TransportMapping

TransportMapping接口代表了SNMP4J所使用的传输层协议。这也是SNMP4J一大特色之一。按照RFC规定,SNMP只使用UDP作为传输层协议。而SNMP4J支持管理端和代理端使用UDP或TCP进行传输。

如果要添加自己的传输协议,继承此接口。

org.snmp4j.PDU

PDU类是SNMP报文单元的抽象,其中PDU类适用于SNMPv1和SNMPv2c。ScopedPDU类继承自PDU类,适用于SNMPv31。

org.snmp4j.CommunityTarget

CommunityTarget类实现了Target接口,用于SNMPv1和SNMPv2c这两个版本。UserTarget类实现了Target接口,适用于SNMPv31。
除了提供由Target接口定义的地址、重传和超时策略信息外,还提供community信息(可以理解为通信密钥)。

org.snmp4j.CommandResponder

监听器接口,接口只有一个processPdu方法,用来处理收到的报文。

org.snmp4j.MessageDispatcher

MessageDispatcherImpl 使用 MessageProcessingModel 实例解码和分派传入消息,并使用适当的 TransportMapping 实例对传出消息进行编码和发送。方法processMessage将从TransportMapping调用,而方法sendPdu将由应用程序调用。

常见用法

发送SNMP请求和构造监听器代码前四行是一致的,都是构造SNMP对象,然后开启监听。SNMP send调用的是java.net.DatagramSocket的send方法,监听器调用的是DatagramSocket的receive方法

发送SNMP请求伪代码步骤:

// 初始化消息分发器,这里举例常用的多线程消息分发器
new MultiThreadedMessageDispatcher(threadPool, new MessageDispatcherImpl());
// 初始化TransportMapping对象,这里举例常用的udp,参数为目标地址对象
new DefaultUdpTransportMapping(UdpAddress);
// 初始化snmp对象
new Snmp(MessageDispatcher, TransportMapping);
// 设置监听模式,以启动Transport Mappings的内部监听线程。
snmp.listen();
// 初始化pdu和CommunityTarget对象并调用snmp对象的send方法
snmp.send(pdu, CommunityTarget);

构造监听器伪代码步骤:

// 初始化消息分发器,这里举例常用的多线程消息分发器
new MultiThreadedMessageDispatcher(threadPool, new MessageDispatcherImpl());
// 初始化TransportMapping对象,这里举例常用的udp,参数为目标地址对象
new DefaultUdpTransportMapping(UdpAddress);
// 初始化snmp对象
new Snmp(MessageDispatcher, TransportMapping);
// 设置监听模式,以启动Transport Mappings的内部监听线程。
snmp.listen();
// 添加自定义的监听器(实现CommandResponder接口,并重写processPdu方法)
snmp.addCommandResponder(自定义监听类);
// 接收到的消息在processPdu方法处理
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值