У меня есть приложение C ++ в Visual Studio, которое при определенных условиях отправляет SNMP-ловушки на удаленную машину. На обеих машинах отключен брандмауэр.
Я использовал Windows API SnmpSendMsg для отправки ловушек.
Удаленный компьютер не получает все ловушки. Например, если мое приложение отправляет 6 ловушек, иногда удаленная машина получает 4 ловушки, иногда 5.
Я использую приемник прерываний «iReasoning MIB Browser». При отладке с использованием wireshark и добавлении журналов в мое приложение я обнаружил, что мое приложение отправляет 6 ловушек с использованием SnmpSendMsg, и каждый раз возвращается состояние 1 (SNMPAPI_SUCCESS). Но Wireshark захватывает только 4-5 ловушек каждый раз.
Мое предположение, почему-то окна не отправляет ловушки.
Я не уверен, как дальше отлаживать эту проблему.
Спасибо
SNMP использует UDP в качестве транспортного протокола.
UDP ненадежен в том смысле, что:
Я бы предложил использовать SNMP INFORM (SNMPv2C или SNMPv3) вместо SNMP TRAP. Они признаны.
Это отладка протокола 101: запустите wireshark в отправляющей системе и принимающей системе, чтобы определить, где потеряны пакеты.