应用程序不发送所有SNMP陷阱

时间:2017-08-02 09:58:41

标签: c++ winapi snmp snmp-trap

我在visual studio中有一个C ++应用程序,它在某些条件下将SNMP陷阱发送到远程计算机。两台计算机都禁用了防火墙。

我使用了Windows API SnmpSendMsg来发送陷阱。

远程计算机未收到所有陷阱。例如,如果我的应用程序发送了6个陷阱,有时远程机器会收到4个陷阱,有时会收到5个陷阱。

我正在使用" iReasoning MIB Browser"陷阱接收器接收陷阱。在使用wireshark进行调试并在我的应用程序中添加日志时,我发现我的应用程序使用SnmpSendMsg发送了6个陷阱,每次返回的状态为1(SNMPAPI_SUCCESS)。但是,wireshark每次只捕获4-5个陷阱。

我的假设是,不知何故窗户没有发送陷阱。

我不确定如何进一步调试此问题。

由于

2 个答案:

答案 0 :(得分:0)

SNMP使用UDP作为传输协议。 从以下意义上讲,UDP是不可靠的:

  • UDP数据包可能会丢失
  • UDP协议没有提供任何机制来判断数据包是否已丢失或重新发送。

我建议使用SNMP INFORM(SNMPv2C或SNMPv3)而不是SNMP TRAP。他们是公认的。

答案 1 :(得分:0)

这是协议调试101:在发送系统和接收系统上运行wireshark,以诊断数据包丢失的位置。