snmp客户端应该如何接收来自多个snmp代理的响应?

时间:2017-06-23 19:10:03

标签: snmp snmp4j

我需要从单个客户端/经理进程向多个snmp代理发送get请求/接收响应。 我已根据以下网址实现了客户端/代理: http://www.jitendrazaa.com/blog/java/snmp/create-snmp-client-in-java-using-snmp4j/ http://www.jitendrazaa.com/blog/java/snmp/creating-snmp-agent-server-in-java-using-snmp4j/

为了向代理发送请求,将对每个服务器执行以下操作:

TransportMapping transport = new DefaultUdpTransportMapping();
snmp = new Snmp(transport);
transport.listen();
...
pdu.setType(PDU.GET);
// communityTarget contains server target address.
ResponseEvent event = snmp.send(pdu, communityTarget, null); 

为了接收来自服务器的响应,我是否需要为每个服务器执行单独的transport.listen()?或创造 每个服务器的新TransportMapping和Snmp对象?

我不明白客户端进程如何知道哪个服务器返回了响应? ...以来 每次调用transport.listen()时,侦听端口地址(transport.getListenAddress())都是相同的。 列出了1个额外的udp端口(netstat)。

我打算从不同的后台线程轮询每个服务器(以便可以配置轮询间隔)。

谢谢

1 个答案:

答案 0 :(得分:0)

您应该使用相同的传输映射。

从您提供的示例中,您似乎正在使用同步API。

响应仅来自您发送请求的代理。

在任何情况下,您都可以从ResponseEvent.getPeerAddress

获取对等(代理)地址

http://www.snmp4j.org/doc/org/snmp4j/event/ResponseEvent.html#getPeerAddress()