我现在已经可以get mib库了.但如果我想set某个oid的话,我现在的做法如下:
........
PDU pdu=new PDU();
//变量绑定
VariableBinding vb=new VariableBinding(new OID(text.getText()));
vb.setVariable(new OctetString("Right here, right now"));
pdu.add(vb);
//设置pdu动作
pdu.setType(PDU.SET);
//发送pdu获取信息并返回一个响应pdu
ResponseEvent response=snmp.send(pdu, target);
//提取响应pdu
PDU responsePdu=response.getResponse();
if(responsePdu!=null)
{
if(responsePdu.getErrorIndex()==responsePdu.noError&&responsePdu.getErrorStatus()==responsePdu.noError)
{
System.out.println(responsePdu);
}
else {
System.out.println("get   error:"+responsePdu.getErrorStatusText()); 
}
但他始终报错
那么set一个oid该怎么做呢?

解决方案 »

  1.   

    报什么错这有篇
    http://blog.csdn.net/stevexk/archive/2007/09/15/1786267.aspx
      

  2.   

    get   response   error
    我没写完整,报这个错是因为responsePdu==null
      

  3.   

    搞定了也.代码如下.呵呵无私奉献:
    try {
    //建立一个udp地址,被管理设备的udp
    String ip="172.16.10.254";
    Address targetAddress=GenericAddress.parse("udp:"+ip+"/161");
    //建立一个snmp传输消息接口
    TransportMapping transport=new DefaultUdpTransportMapping();
    Snmp snmp=new Snmp(transport);
    transport.listen();
    //创建target
    CommunityTarget target=new CommunityTarget();
    target.setCommunity(new OctetString("public"));
    target.setAddress(targetAddress);
    target.setRetries(1);//重复次数
    target.setTimeout(5000);//超时
    target.setVersion(SnmpConstants.version2c);//版本
    //创建pdu,snmp协议的数据单元
    PDU pdu=new PDU();
    //变量绑定
    VariableBinding vb=new VariableBinding(new OID(text.getText()));
    pdu.add(vb);
    //设置pdu动作;
    pdu.setType(PDU.GETNEXT);
    //发送pdu获取信息并返回一个响应pdu
    ResponseEvent response=snmp.send(pdu, target);
    //提取响应pdu
    PDU responsePdu=response.getResponse();
    //获取响应方的地址
    Address peerAddress=response.getPeerAddress();
    //分析响应pdu包
    if(responsePdu!=null)
    {
    if(responsePdu.getErrorIndex()==responsePdu.noError&&responsePdu.getErrorStatus()==responsePdu.noError)
    {
    String pause=response.getResponse().getVariableBindings().toString(); 
            String   getvalue=pause.substring(   pause.indexOf("=   ")+2,pause.indexOf(']')); 
                        String   oid=pause.substring(pause.indexOf("VBS[")+2,pause.indexOf("=")-1); 
                        System.out.println(responsePdu);
                        System.out.println(oid);
                      VariableBinding vb2=new VariableBinding(new OID(oid),new OctetString("aaaa"));
             //pdu.clear();//用同一个pdu就必须要把相同的绑定清除掉
                        PDU pdu2=new PDU();
             pdu2.add(vb2);
             pdu2.setType(PDU.SET);
             response=snmp.send(pdu2, target);
             responsePdu=response.getResponse();
                       System.out.println(responsePdu);
    }
    else {
    System.out.println("get   error:"+responsePdu.getErrorStatusText()); 
    }
    }
    else {
    System.out.println("get   response   error"); 
    }
    //snmp.close();
    } catch (IOException e) {
      e.printStackTrace();  }
      

  4.   

    对了.上面的snmp.close()应该用的哈.
      

  5.   

    谢谢楼主的共享,请问如果要set的oid不是字符串,那应该如何绑定