当前位置: 首页 > 知识库问答 >
问题:

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

苏乐童
2023-03-14

我需要从单个客户端/管理器进程向多个snmp代理发送get请求/接收响应。我已经基于以下URL实现了客户端/代理: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()?或者为每个服务器创建一个新的TransportMaps和Snmp对象?

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

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

非常感谢。

共有1个答案

符俊材
2023-03-14

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

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

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

在任何情况下,您都可以从ResponseEvent获取对等(代理)地址。getPeerAddress

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

 类似资料:
  • 如何使用C或C和net snmp模块接收陷阱。我需要示例代码,但示例位于http://www.net-snmp.org/使用系统调用,但不要使用API方法。

  • 我已使用snmp4j api在SNMP代理上创建,但SNMP表注册存在问题 一旦我注册了表和表中的行。然后,如果我在表中设置值,所有行都会设置相同的值。我已经从JSON创建了snmp表 如果我设置了值,请在下表中 .1.3.6.1.4.1.1.201.6.2。它为下表中注册的所有行设置值。是否有人知道如何使用snmmpj代理正确注册和设置值。

  • 问题内容: 我有一个Java控制器,必须向我发送一些文本数据和不同的字节数组。因此,我正在构建n多部分请求,并将其写入到HttpServletResponse的流中。 现在我的问题是如何在客户端解析响应并提取多个部分。 服务器代码片段:- 客户代码片段:- 我检查了CloseableHttpResponse和HttpEntity,但是它们都不提供解析多部分请求的方法。 编辑1:这是我在客户端流中收

  • 我有一个java控制器,它必须向我发送一些文本数据和不同的字节数组。因此,我正在构建一个多部分请求,并将其从HttpServletResponse写入流。 现在我的问题是如何在客户端解析响应并提取多个部分。 服务器代码片段:- 客户端代码段:- 我检查了CloseableHttpResponse和HttpEntity,但它们都没有提供解析多部分请求的方法。 编辑1:这是我在客户端流中收到的示例响应

  • 我在Python3中收到了一条SNMP陷阱消息,得到了一个十六进制数。 如何将其转换为字符串以便查看? 接收数据(十六进制) B'0E\x02\x01\x01\x04\x06404040\xa78\x02\x04\x00\xf6\x17~\x02\x01\x00\x02\x01\x000*0\x0f\x06\x08\x06\x01\x02\x01\x01\x03\x00C\x03\x01k0\x1

  • 我正在编写一个snmp客户端,它通过UDP端口161连接到网络服务器。它将发送ASN格式的消息并接收来自服务器的响应。我已经尝试了我能想到的一切,但我似乎无法让它正常工作。 程序应该接收并解析cmd中以下命令返回的计数器字段: snmpget-d-v 2c-c公共129.130.10.43ip.ipInReceives.0 //命令结果: { 向UDP发送43字节:[129.130.10.43]: