所以我还在学习SNMP,请放心.我正在使用snmp4j,而不仅仅是库,但是我已经加载了源代码,如果它能得到我需要的东西,我不反对修改源代码.我编写了一个代理和一个测试客户端.我想要做的是能够检查来自测试客户端的请求,特别是监听对特定OID的"设置"请求.
我正在考虑这样做的当前方式是在运行snmp4j方法fireProcessMessage(位于包中org.snmp4j.transport.DefaultUdpTranportMapping)后立即捕获请求,但我不知道代理如何查询自己的mib以获取oid.是否存在代理用于从其mib获取OID值的方法?
或者有更好的方法来捕获特定的SET请求吗?甚至可以做我想做的事情吗?基本上我想要做的是如果客户端将某个OID值设置为1(true),则运行另一个进程.
Nik*_*hil 11
可以通过扩展CommandProcessor 并实现RequestHandler来完成
就像我做的那样
public class SNMPRequestProcessor extends CommandProcessor
{
SetHandler setHandler = new SetHandler ();
public SNMPRequestProcessor()
{
//Your code
}
@Override
protected void processRequest(CommandResponderEvent command, CoexistenceInfo cinfo, RequestHandler handler)
{
synchronized (command) {
if (command.getPDU().getType() == PDU.SET) {
super.processRequest(command, cinfo, setHandler);
}
super.processRequest(command, cinfo, handler);
}
}
/**
* Handler for process set request which update to the database
*
*/
class SetHandler implements RequestHandler
{
@Override
public boolean isSupported(int mode)
{
return mode == PDU.SET;
}
@Override
public void processPdu(Request request, MOServer server)
{
//your code
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
801 次 |
| 最近记录: |