snmp客户端应如何从多个snmp代理接收响应?

snmp客户端应如何从多个snmp代理接收响应?,snmp,snmp4j,Snmp,Snmp4j,我需要从单个客户端/管理器进程向多个snmp代理发送get请求/接收响应。 我已经基于以下URL实现了客户端/代理: 为了向代理发送请求,对每台服务器执行以下操作: TransportMapping transport = new DefaultUdpTransportMapping(); snmp = new Snmp(transport); transport.listen(); ... pdu.setType(PDU.GET); // communityTarget contains s

我需要从单个客户端/管理器进程向多个snmp代理发送get请求/接收响应。 我已经基于以下URL实现了客户端/代理:

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

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)

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


谢谢

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

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

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

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


使用同步api,我是否正确地认为,如果我从不同线程发送请求/响应,则从一个线程发送snmp同步请求/响应不会阻止另一个线程的同步请求/响应?i、 它们可以同时发送?没错。每个线程都独立工作。SNMP4J是线程安全的