Chinaunix首页 | 论坛 | 博客
  • 博客访问: 18969
  • 博文数量: 16
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 100
  • 用 户 组: 普通用户
  • 注册时间: 2012-03-04 10:47
文章分类
文章存档

2012年(16)

我的朋友
最近访客

分类:

2012-03-04 10:54:58

专业级的SNMP框架---SNMP4J

 

  • SNMP4J简介
相比SNMP PACKAGE API 比较低的门槛和简单的功能,SNMP4J则是完全专业级的框架.他的SNMP-TARGET-PDU的三点结构更科学更严谨,完善的PDU数据引擎也是业界的一种潮流.SNMP4J的强大体现在他对SNMPV3标准下基于用户安全(USM)方式的认证,加密,和对Agent功能的强大支持.

  • SNMP4J基本GET和GETNEXT功能
1.先建立一个工具类,主要是对SNMP,TARGET,PDU的三个SNMP4J基本类的实例化
注:出于简化,本例去掉了SNMPV3的支持,以下代码只支持SNMPV1和SNMPV2C
public class Snmp4JHelper {
   
   
      public static Snmp createSnmpSession(Address address) throws IOException {
       
        // new TransportMapping object 
        AbstractTransportMapping transport;
        if (address instanceof TcpAddress) {
          transport = new DefaultTcpTransportMapping();
        }
        else {
          transport = new DefaultUdpTransportMapping();
        }
       
        // new Snmp object
        Snmp snmp =  new Snmp(transport);

        return snmp;
      }
 
     
      public static Target createTarget(Address address,OctetString community) {
           
          CommunityTarget target = new CommunityTarget();
         
          target.setAddress(address);
          target.setCommunity(community);
          return target;

      }
     
      public static PDU createPDU(int pduType) {
         
          PDU request;

          if (pduType == PDU.V1TRAP) {
            request = new PDUv1();  
          }
          else {
            request = new PDU();
          }
         
          request.setType(pduType);
          return request;
    }
几个工具方法
阅读(533) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
   
    public static OctetString createOctetString(String s) {
        OctetString octetString;
        if (s.startsWith("0x")) {
          octetString = OctetString.fromHexString(s.substring(2), ':');
        }
        else {
          octetString = new OctetString(s);
        }
        return octetString;
     
  
   
    public static Address getAddress(String transportAddress) {   
           
            // 如果有冒号存在,就是"udp:xxx.xxx.xxx.xxx"的格式,分离出协议和地址
            int colon = transportAddress.indexOf(':');
            String transprotocol = "udp";
            if (colon > 0) {
              transprotocol = transportAddress.substring(0, colon);
              transportAddress = transportAddress.substring(colon+1);
            }
           
            // append default port follow end of transportAddress
            if (transportAddress.indexOf('/') < 0) {
              transportAddress += "/161";
            }
           
            if (transprotocol.equalsIgnoreCase("udp")) {
              retur