使用snmp4j实现Snmp功能(三)

相关链接:
Snmp学习笔记
使用snmp4j实现Snmp功能(一)
使用snmp4j实现Snmp功能(二)
使用snmp4j实现Snmp功能(三)

前两篇文章讲了如何使用Snmp4j实现Set、Get(使用snmp4j实现Snmp功能(一))以及发送、接收Trap(使用snmp4j实现Snmp功能(二)) 功能。

在我们前面的实现中,如果访问MIB库中不存在的OID,Get方式的话,我们会得到一个Null值,而Set方式时Agent端会把我们发过去的
PDU原封不动的返回回来。当然多数情况下这不是我们想要的结果,所以今天我们讲一下如何设置Agent端的Response。

这个功能其实和接收发送Trap是一样的,只不过对象变了一下而已。同样,接收Set和Get的方法写在CommandResponderprocessPdu()中。我们把前面写过的initComm() 的processPdu()中添加一段代码(Agent端):

 // 设置Response

       if ((command.getType() != PDU.TRAP)

                     && (command.getType() != PDU.V1TRAP)

                     && (command.getType() != PDU.REPORT)

                     && (command.getType() != PDU.RESPONSE)) {

              command.setErrorIndex(0);

              command.setErrorStatus(0);

              command.setType(PDU.RESPONSE);

              // 设置PDU的Value

              command.get(0).setVariable(new OctetString("MYSNMP"));

              StatusInformation statusInformation = new StatusInformation();

              StateReference ref = e.getStateReference();

              try {

                     System.out.println("send Response!");

                     e.getMessageDispatcher().returnResponsePdu(

                                   e.getMessageProcessingModel(),

                                   e.getSecurityModel(), e.getSecurityName(),

                                   e.getSecurityLevel(), command,

                                   e.getMaxSizeResponsePDU(), ref,

                                   statusInformation);

              } catch (MessageException ex) {

                     System.err.println("Error while sending response: "

                                   + ex.getMessage());

              }

       }

接下来让Agent端的main()函数调用listen(),运行main()函数,Agent端开始监听来自Manager的Set和Get。

回到本机,向Agent端发送一个Set的PDU或Get的PDU,如果控制台打出我们刚刚在程序中设置的值"MYSNMP",说明我们的Response设置成功啦!

当然,程序中的设置PDU的Value是一个最简单的Response示例,在实际的应用中,应该要根据不同的OID返回不同的Value,这一部分的代码要根据实际的应用去发挥啦。

时间: 2024-10-13 04:13:11

使用snmp4j实现Snmp功能(三)的相关文章

使用snmp4j实现Snmp功能(一)

相关链接:Snmp学习笔记使用snmp4j实现Snmp功能(一)使用snmp4j实现Snmp功能(二)使用snmp4j实现Snmp功能(三) 上一篇文章讲了Snmp的一些基本概念(Snmp学习笔记),接下来,我们使用Java的开源组件snmp4j来实现一下Snmp里的各种功能.首先是上一篇文章中的那个例子.即通过snmp获取机器名. snmp4j的jar包可以在它的官方网站http://www.snmp4j.org/上下载,我就不啰嗦了. 接下来直接贴代码: import java.io.IOE

使用snmp4j实现Snmp功能(二)

相关链接:Snmp学习笔记使用snmp4j实现Snmp功能(一)使用snmp4j实现Snmp功能(二)使用snmp4j实现Snmp功能(三) 前一篇文章讲了如何用snmp4j实现set和get的功能,今天讲如何接收trap. snmp4j提供了一个抽象类CommandResponder类用于接收trap,这个类里面有一个必须实现的方法processPdu(),当接收到trap,会自动进入这个方法,因此我们可以将对trap的处理写在这里. 下面修改上篇文章例子中的initComm()方法: pri

自己实现spring核心功能 三

前言 前两篇已经基本实现了spring的核心功能,下面讲到的参数绑定是属于springMvc的范畴了.本篇主要将请求到servlet后怎么去做映射和处理.首先来看一看dispatherServlet的基本流程,这我在以前的博客里面也讲过,传送门 这里先给个我们的简易处理流程 准备工作 为了能将请求传递,我们需要写一个控制器类来接收请求,写两个接口来处理请求 HomeController类 1 @JCController 2 @JCRequestMapping("/home") 3 pu

CentOS 5下freeswitch中集成使用ekho实现TTS功能三

四:在freeswitch中调用ekho 注:在测试过程中该语音包好像没用 FreeSWITCH 中文语音包测试版fssounds.zip 在/usr/local/freeswitch/sounds/下建立目录zh/cn/sue(因为不知道声音主人的名字,就先用sue代替了,抱歉抱歉) mkdir -p /usr/local/freeswitch/sounds/zh/cn/sue 将声音文件移动到目标目录 mv output/* /usr/local/freeswitch/sounds/zh/c

同一功能三种不同实现方式你选哪个

例题一枚:在input框中输入内容,会相应的显示在下面的div中的不同做法: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <link rel="stylesheet" type="text/css" href="css/bootstrap.css"/>

Snmp学习笔记

相关链接:Snmp学习笔记使用snmp4j实现Snmp功能(一)使用snmp4j实现Snmp功能(二)使用snmp4j实现Snmp功能(三) SNMP是英文“Simple Network Management Protocol”的缩写,中文意思是“简单网络管理协议”.SNMP是眼下最经常使用的环境管理协议.SNMP被设计成与协议无关,所以它能够在IP,IPX,AppleTalk,OSI以及其它用到的传输协议上被使用.SNMP是一系列协议组和规范,它们提供了一种从网络上的设备中收集网络管理信息的方

snmp代码篇

相关链接:Snmp学习笔记使用snmp4j实现Snmp功能(一)使用snmp4j实现Snmp功能(二)使用snmp4j实现Snmp功能(三) SNMP是英文“Simple Network Management Protocol”的缩写,中文意思是“简单网络管理协议”.SNMP是目前最常用的环境管理协议.SNMP被设计成与协议无关,所以它可以在 IP,IPX,AppleTalk,OSI以及其他用到的传输协议上被使用.SNMP是一系列协议组和规范,它们提供了一种从网络上的设备中收集网络管理 信息的方

Snmp学习总结(七)——SNMP4J介绍

一.SNMP4J介绍 SNMP4J是一个用Java来实现SNMP(简单网络管理协议)协议的开源项目.它支持以命令行的形式进行管理与响应.SNMP4J是纯面向对象设计与SNMP++(用C++实现SNMPv1/v2c/v3)相类似. SNMP4J API 提供以下下特性: 支持MD5和SHA验证,DES,3DES,AES128.AES192和AES256加密的SNMPv3. 支持MPv1,MPv2C和MPv3,带执行的可阻塞的信息处理模块. 全部PDU格式. 可阻塞的传输拓扑.支持UPD.TCP.T

SNMP 原理与实战详解

原文地址:http://freeloda.blog.51cto.com/2033581/1306743 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://freeloda.blog.51cto.com/2033581/1306743 大纲 一.什么是SNMP 二.SNMP背景 三.SNMP结构概述 四.SNMP支持的网管操作 五.SNMP的实现结构 六.SNMP的技术内容 七.SNMP的发展历史 八.SNMP的技术术语 九.综合