请问我使用的是snmp4j,现在想接收一个set消息后,向set发送端返回一个resopse,
这个应怎么实现呢?请给位高手多多指教,谢谢!!!!小弟整了好几天了,还是未果,十分感谢!!!   在线等

解决方案 »

  1.   

    需要在snmp agent里接收set消息和返回response消息,其实就是udp协议,你怎么发送set的,就怎么response。端口和ip明确就行。
      

  2.   

    同意楼上的response是根据你的发送的set接受的
      

  3.   

    我初学的,写了一个测试,共同研究了.
    CommandResponder responder = new CommandResponder(){
    public void processPdu(CommandResponderEvent event){

    /*取得PDU信息*/
    PDU gpdu = event.getPDU();
    if(gpdu == null){
    System.out.println("pdu is null.");
    }else{
    /*分析PDU信息*/
            System.out.println("client rcv:"+gpdu.toString());
    switch(gpdu.getType()){
    case PDU.GET:
    CommunityTarget target = new CommunityTarget();
    Address addr = event.getPeerAddress();
    target.setAddress(addr);
    PDU rpdu = new PDU();
    rpdu.setType(PDU.RESPONSE);
    rpdu.setRequestID(gpdu.getRequestID());
    for(int i=0; i<gpdu.getVariableBindings().size(); i++){
    VariableBinding vb = gpdu.get(i);
    OID oid = vb.getOid();
    //System.out.println("get oid:"+oid);
    //.....get oid value
    //vb.setOid(oid);
    //String svar = "hehe+"+i;
    //vb.setVariable(new OctetString(svar));
    rpdu.add(vb);
    }
    try{
    /*回复PDU信息*/
    event.getMessageDispatcher()
    .sendPdu(event.getTransportMapping(),
    event.getPeerAddress(),
    event.getMessageProcessingModel(),
    event.getSecurityModel(),
    event.getSecurityName(), 
    event.getSecurityLevel(), 
    rpdu, false);
    }catch(Exception ex){
    ex.printStackTrace();
    }
    break;
    default:

    }
    }
    }
    };snmp.addCommandResponder(responder);