2017-08-02 71 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來診斷數據包丟失的位置。