2017-08-02 123 views
-1

我在Visual Studio中有一个C++应用程序,它在特定条件下向远程计算机发送SNMP陷阱。两台计算机都禁用了防火墙。不发送所有SNMP陷阱的应用程序

我已经使用windows API SnmpSendMsg来发送陷阱。

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

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

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

我不知道如何进一步调试此问题。

谢谢

回答

0

SNMP使用UDP作为传输协议。 的UDP是在这个意义上不可靠是:

  • UDP数据包可能会丢失
  • UDP协议提供任何机制来告诉我们,如果数据包已经丢失,或者重新发送它们。

我建议使用SNMP INFORM(SNMPv2C或SNMPv3)而不是SNMP TRAPs。他们被承认。

0

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