没有合适的资源?快使用搜索试试~ 我知道了~
首页使用Java进行SNMP编程-SNMP4J-代码实例
使用SNMP4J可以很方便的实现一个SNMP NMS的功能。 对于SNMPv1/SNMPv2,简单的说,只需要以下几个步骤 1) 创建Snmp对象snmp 2) 创建CommunityTarget对象target,并指定community, version, address, timeout, retry等参数。 3) 创建PDU对象pdu,并指定操作类型(GET/GETNEXT/GETBULK/SET), 添加VariableBinding(也就是待操作的OID), 如果是GETBULK操作,还可以指定MaxRepetitions和NonRepeaters。 注意一定要指定MaxRepetitions,默认值是0,那样不会返回任何结果。
资源详情
资源评论
资源推荐
使用 可以很方便的实现一个 的功能。
对于 ,简单的说,只需要以下几个步骤
创建 对象
创建 对象 ,并指定 等参数。
创建 ! 对象 ,并指定操作类型"#$#$$%#$&!'($, 添加
)*+&"也就是待操作的 ,-
...如果是 #$&!'( 操作,还可以指定 /0 和 0。
.注意一定要指定 /0,默认值是 1,那样不会返回任何结果。
调用 2"方法,发送请求请返回结果。
此外, 提供了 *+!+ 类,可以很轻松的实现一个 3+4 的功能,比如一次返回
一个表格下面的所有 -& 值。
*+!+ 类还支持指定 5*/和 */, 得到更小范围的结果以提高性
能。这一点对于从一个很多行的表中取一部分行的数据来说很重要。
还支持异步的 方法。
下面的代码实例实现了 #$#$$%#$&!'(3+4$ 操作,
以及一个利用异步 方法实现的 : 对一个广播地址发送请求,等待 返回
的应答。
如果需要对一个范围内的 - 进行扫描,可以稍加改进,反复调用异步 多次发送给不同 -。
[java] view plaincopyprint?
1. importjava.io.IOException;
2. importjava.util.List;
3. importjava.util.Vector;
4.
5. importorg.snmp4j.CommunityTarget;
6. importorg.snmp4j.PDU;
7. importorg.snmp4j.Snmp;
8. importorg.snmp4j.event.ResponseEvent;
9. importorg.snmp4j.event.ResponseListener;
10. importorg.snmp4j.mp.SnmpConstants;
11. importorg.snmp4j.smi.OID;
12. importorg.snmp4j.smi.OctetString;
13. importorg.snmp4j.smi.UdpAddress;
14. importorg.snmp4j.smi.VariableBinding;
15. importorg.snmp4j.transport.DefaultUdpTransportMapping;
16. importorg.snmp4j.util.DefaultPDUFactory;
17. importorg.snmp4j.util.TableEvent;
18. importorg.snmp4j.util.TableUtils;
19.
20. publicclassSNMPv2Test{
21. publicstaticvoidmain(String[]args)throwsIOException,Interrup
tedException{
22. Snmpsnmp=newSnmp(newDefaultUdpTransportMapping());
23. snmp.listen();
24.
25. CommunityTargettarget=newCommunityTarget();
26. target.setCommunity(newOctetString("public"));
27. target.setVersion(SnmpConstants.version2c);
28. target.setAddress(newUdpAddress("192.168.0.100/161"));
29. target.setTimeout(3000);//3s
30. target.setRetries(1);
31.
32. sendRequest(snmp,createGetPdu(),target);
33. sendRequest(snmp,createGetNextPdu(),target);
34. sendRequest(snmp,createGetBulkPdu(),target);
35. snmpWalk(snmp,target);
36.
37. target.setCommunity(newOctetString("private"));
38. sendRequest(snmp,createSetPdu(),target);
39.
40. CommunityTargetbroadcastTarget=newCommunityTarget();
41. broadcastTarget.setCommunity(newOctetString("public"));
42. broadcastTarget.setVersion(SnmpConstants.version2c);
43. broadcastTarget.setAddress(newUdpAddress("192.168.0.255/161"))
;
44. broadcastTarget.setTimeout(5000);//5s
45. sendAsyncRequest(snmp,createGetNextPdu(),broadcastTarget);
46. Thread.sleep(6000);//mainthreadwait6sforthecompletionof
asynchronousrequest
47. }
48.
49. privatestaticPDUcreateGetPdu(){
50. PDUpdu=newPDU();
51. pdu.setType(PDU.GET);
52. pdu.add(newVariableBinding(newOID("1.3.6.1.2.1.1.3.0")));//
sysUpTime
53. pdu.add(newVariableBinding(newOID("1.3.6.1.2.1.1.5.0")));//
sysName
54. pdu.add(newVariableBinding(newOID("1.3.6.1.2.1.1.5")));//
expectanno_such_instanceerror
55. returnpdu;
56. }
57.
58. privatestaticPDUcreateGetNextPdu(){
59. PDUpdu=newPDU();
60. pdu.setType(PDU.GETNEXT);
61. pdu.add(newVariableBinding(newOID("1.3.6.1.2.1.1.3")));//
sysUpTime
62. pdu.add(newVariableBinding(newOID("1.3.6.1.2.1.1.5")));//
sysName
63.
64. returnpdu;
65. }
66.
67. privatestaticPDUcreateGetBulkPdu(){
68. PDUpdu=newPDU();
69. pdu.setType(PDU.GETBULK);
70. pdu.setMaxRepetitions(10);//mustsetit,defaultis0
71. pdu.setNonRepeaters(0);
剩余10页未读,继续阅读
jtwmy_lb
- 粉丝: 4
- 资源: 13
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
- SPC统计方法基础知识.pptx
- MW全能培训汽轮机调节保安系统PPT教学课件.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0