我想将一些文本内容发送到snmp管理基站上,在网上看到说是可以用snmp4j包,所以我就下载了一个,但是这个开源包的例子太少了,也不完全,现在写了一个test,却发现有错误,但是我用捉包软件看了,有发送一个snmp的包,且不知,要怎么将我想发送的文本内容放置到PDU里,请各位大侠多多帮忙!!!
      Address targetAddress = GenericAddress.parse("udp:192.168.14.165/161");
      PDUv1 pdu = new PDUv1();
      pdu.setType(PDU.V1TRAP);
      pdu.setGenericTrap(PDUv1.COLDSTART);
      
      pdu.add(new VariableBinding(SnmpConstants.sysUpTime,new TimeTicks(sysUpTime)));
      pdu.add(new VariableBinding(SnmpConstants.sysDescr));
      pdu.add(new VariableBinding(SnmpConstants.snmpTrapOID,SnmpConstants.linkDown));      CommunityTarget target = new CommunityTarget();
      target.setCommunity(new OctetString("yangru"));
      target.setAddress(targetAddress);
      target.setVersion(SnmpConstants.version1);      DefaultUdpTransportMapping udpTransportMap=new DefaultUdpTransportMapping();
      Snmp snmp = new Snmp(udpTransportMap);
      System.out.println("----------snmp.send start----------");
      ResponseEvent response = snmp.send(pdu, target);
      System.out.println("----------snmp.send end----------");
      //会出错的一行
      if (response.getResponse() == null) {
        // request timed out
      }
      else {
        System.out.println("Received response from: " +
                           response.getPeerAddress());
        // dump response PDU
        System.out.println(response.getResponse().toString());
      }以上是我的代码,出错信息是在if (response.getResponse() == null) ,好象没有回应,不知道如何解释,且如何把我想要的发送的文本内容设置成PDU!!!

解决方案 »

  1.   

    都没有人用过snmp4j这个组件吗?
      

  2.   


    ResponseEvent response = snmp.send(pdu, target);
    可以看出,
    内容不是放在pdu就是target对象中你可以查一下PDUv1、CommunityTarget 类中有没有相关的方法。
      

  3.   

    有没有具体的例子?就是简单的一个将文本内容发给snmp服务器!!!谢谢!!!!100分相送啊!!!
    http://community.csdn.net/Expert/topic/4319/4319389.xml?temp=.7871057
    这个是在另一个地方的同样的问题!!!!
      

  4.   

    我来看看,不过我还没有用过snmp4j,以前一直用得是snmp stack
      

  5.   

    程序没问题啊,可以成功发送出Trap PDU,因为你这个是一个TRAP PDU,所以是没有响应值的,所以Response是null,也就不能执行getResponse()方法,出现空指针错误,Trap发出去之后是不期响应的,不是Get Request PDU,发出去之后,期望Agent,回送一个Get Response过来如果你希望发送自己的字符串只要,在你的PDU中这样处理
    pdu.add(new VariableBinding(SnmpConstants.sysDescr,new OctetString("You System Description")));后面的值是一个Variable,是一种合法的ASN类型不知道你在哪,怎么小女子也做起这些事情来了
      

  6.   

    听君一席话,胜读十年书啊!!!太谢谢 kypfos(不在寻梦) !!!!
    初学snmp,有很多东西都不明白!想向你请教.
    如何知道这个发送的消息已经成功发送到snmp的服务器去了呢?现在我是用一个捉包的工具Ethereal来看的,虽然能看到发送出去两个包snmp的包,但是却没有看到是发送出去的内容You System Description.
    还有trap和get request PDU有什么区别?
    真不好意思,让你见笑了,没办法,生活所逼啊!!!:P
      

  7.   

    建议你买一本SNMP协议的书看看,一般介绍tcp/ip议的书籍也都有讲到snmp应用协议,v1版有5种PDU,v2版加入了两促PDU,v3版引入安全机制,安全性处理复杂得多另外建议你用一个比Ethereal更好的工具,Ethereal界面太丑啦,忘记叫什么名字了,非常类似于Ethereal的功能,但是界面要友好,支持协议也多了不过你要在Linux用监听工具就用Ethereal好了我用包监听工具完整的看到了三个OID及对应的值都发送出去了你可以安装windows组件的snmp代理,来测试其他PDU的构成
      

  8.   

    是Packetyzer,玩转snmp还需要一些其他的工具测试,比照理解
      

  9.   

    谢谢!我去网上找了TCP-IP详解这本书,看了里面对snmp的介绍,但是它对trap的介绍比较少,我现在想知道如果我想用trap来发送一个比较大的文本内容,它对发送的内容长度是否有限制,且不是说udp协议掉包的现象很普遍,那么当发送一个大的文本内容的话,如何保证它的完整性呢?
      

  10.   

    包的大小好像是1300字节以下,相信这些字节已经够你发送信息了,一般一个trap只会上报几个简单的信息,snmp的Trap是以ascii明文的形式发送数据,像ipmi应用trap只需发送几个字节就能表示比较详细的信息udp在局域网内掉包其实很少见的
      

  11.   

    真是太谢谢你了!!!!帮我解决了一个大难题!!!
    不知你有msn吗?可以加我吗?[email protected],希望以后还有机会能向你请教问题!
      

  12.   

    我给你回过CSDN信息啊,你查看一下,很早以前的