请教高手,如何用snmp4j实现对mib信息的收发,严重加分!!!

Mrrrr 2007-11-11 05:32:07
最好是一个简单的例子
...全文
288 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
sdzqyinshoukui 2009-11-12
  • 打赏
  • 举报
回复
我刚接触SNMP,我想问一下,这种监控的实现是不是只需要服务器端编程就可以了,客户端要监控的PC机上是不是只需要安装snmp服务就可以了!急请回复!!!!!!谢谢!!!!!!!!!!!
Mrrrr 2007-11-21
  • 打赏
  • 举报
回复
非常感谢ckcsb的帮助!!!!
ckcsb 2007-11-17
  • 打赏
  • 举报
回复
客户端实现其实snmp4j agent包也完全实现了,但这个包我暂时还不很了解,如果实现得当的话应该可以完全替代net-snmp
ckcsb 2007-11-17
  • 打赏
  • 举报
回复
package snmp;

import java.io.IOException;
import java.net.InetAddress;

import org.snmp4j.CommunityTarget;
import org.snmp4j.PDU;
import org.snmp4j.Snmp;
import org.snmp4j.event.ResponseEvent;
import org.snmp4j.mp.SnmpConstants;
import org.snmp4j.smi.OID;
import org.snmp4j.smi.OctetString;
import org.snmp4j.smi.UdpAddress;
import org.snmp4j.smi.VariableBinding;
import org.snmp4j.transport.DefaultUdpTransportMapping;

public class test3{

public static void main(String[] args)
{
try {
Snmp snmp = new Snmp(new DefaultUdpTransportMapping());
CommunityTarget target = new CommunityTarget();//agent对象
target.setCommunity(new OctetString("public"));//设置共同体名,没发现设置RWCommnity的方
//法,大概只能设一个.
target.setVersion(SnmpConstants.version2c);//设置版本
target.setAddress(new UdpAddress("127.0.0.1/161"));//设置IP地址和端口号,这里竟然用'/'来分
//隔,当初确实没有料到,JDOC的说明等于没有.
target.setRetries(1); //设置重试次数
target.setTimeout(5000); //设置超时

snmp.listen(); //监听
PDU request = new PDU(); //new request PDU包
//set pud type and set oid
request.setType(PDU.GET); //设置PDU类型,
request.add(new VariableBinding(new OID(".1.3.6.1.2.1.1.1.0"))); //OID添加
// request.add(new VariableBinding(new OID(".1.3.6.1.2.1.1.2.0")));
System.out.println("request UDP:" + request);//请求包内内容输出,
PDU response = null;//定义response包
ResponseEvent responseEvent = snmp.send(request, target); //发出request PDU
//接收response PDU
response = responseEvent.getResponse();

//response PDU包解析
if(response!=null){
if(response.getErrorIndex()==response.noError&&response.getErrorStatus()==response.noError){
System.out.println("no error.");
String pause=responseEvent.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(oid);
System.out.println(response);

}else{
System.out.println("get error:"+response.getErrorStatusText());
}
}else{
System.out.println("get response error");
}


} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
}

上面这个类实现的是snmp服务端功能,还需要在检测的机子上面安装agent端,譬如net-snmp,希望有帮助
Mrrrr 2007-11-16
  • 打赏
  • 举报
回复
confused!!
lilifb 2007-11-14
  • 打赏
  • 举报
回复
mark

62,612

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧