0

我有一个启用了 snmp 的设备,我想做它的监控。但是这个设备对所有的获取请求都给出了 Request-ID 0 的响应。snmp4j 库丢弃这些接收到的数据包,因为它发送的请求 ID 值不是 0丢弃接收到的数据包并返回“null”值以响应。

如果我在发送 get 请求之前在 snmp 数据包中将 Request-ID 设置为 0,则可以处理响应 snmp 数据包。

对于这个 snmp4j 库包含“setRequestID(Integer32 (value))”函数来设置任何 snmp 数据包所需的 Request-ID,但该函数不能将 Request-ID 值设置为 0。当我将值设置为 0 时,这函数将此值替换为某个随机请求 ID 值。

如果有人有解决方案,请回复。谢谢你。

4

1 回答 1

1

request-id 字段用于在响应返回客户端时标识响应。因此,如果您正在查询的设备返回请求 ID 值为 0 而不是提供的值的所有请求,则客户端 (snmp4j) 正确丢弃响应,因为它是无效的。响应包中的 request-id 必须始终与原始请求中的 request-id 匹配。该设备有一个错误的 SNMP 堆栈。如果您更改代码以强制请求始终具有 0 的请求 ID,则您正在破坏功能以启用与非标准代理的兼容性,我建议您不要这样做。

于 2013-09-23T20:12:40.840 回答