c++ - SNMP 类型 Unsigned32 的正确编码是什么?

标签 c++ windows linux snmp net-snmp

我正在编写一个 SNMP 代理,MIB 定义包括一个 Unsigned32 类型的 OID。

代理的 Unix 实现使用 Net-SNMP 并将 OID 设置为 ASN_UNSIGNED 类型,因为它没有 ASN_UNSIGNED32。当我使用 Wireshark 查看 GET 响应时,它会将其解码为“Gauge32”值。乍一看这是有道理的,因为根据 RFC 1902 Unsigned32 和 Gauge32 是相同的。

Windows 实现基于 Windows 的 SnmpAPI.lib,并将 OID 设置为 ASN_UNSIGNED32,当我使用 Wireshark 查看 GET 响应时,它会将其解码为“Unsigned32”。这对我来说更好看。

为什么这 2 种实现会在线路上产生不同的结果?

哪个是正确的版本,我如何设法从两个实现中获得相同的版本?

最佳答案

事实证明,Net-SNMP 使用当前的 RFC 1902 编码,其中 Unsigned32 和 Gauge32 是相同的,而 Windows 使用过时的 RFC 1442 编码,其中 Unsigned32 和 Gauge32 具有不同的编码。

关于c++ - SNMP 类型 Unsigned32 的正确编码是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10756666/

相关文章:

php - 将 php 脚本结果写入文本文件

windows - 拉Microsoft/xxxxx时未知Blob

linux - 如果我想实现 RDMA NIC 驱动程序,从哪里开始 - 建议

linux - 如何在 Linux/bash 中为 shell 脚本创建状态日志

c++ - 为什么 C++11 隐式删除了我的默认构造函数?

c++标准部分ID,其中提到析构函数隐含地没有抛出

c++ - 如何在 C/C++ 中查找矩阵的数据大小

c++ - 为什么我的程序运行完后窗口立即消失了?我怎样才能让它留在身边?

linux - 在 linux 中只获取文件名(不包括路径名)和记录数

c++ - 为什么我不能 std::partition 这个 std::unordered_map?