Мне нужна помощь с winsnmp для эмуляции устройства агента
Я пытаюсь написать некоторый код для эмуляции ряда устройств агента в сети. Они используют протокол SNMP для связи с главным компьютером. Я успешно использовал функцию SnmpListen в winSNMP для чтения запросов, отправленных хостом. Мои проблемы до сих пор таковы:
1) Когда я посылаю ответ, вызов SnmpSendMsg завершается успешно, но иногда номер порта вместо 161 (как я его установил) является каким-то случайным числом.
2) при отправке сообщений я указываю исходную сущность с помощью SnmpStrToEntity и указываю IP-адрес эмулируемого устройства. В моих сетевых настройках указаны все устройства. Однако когда я проверяю пакеты с помощью Wireshark, они всегда имеют один и тот же адрес sourceIP, а не то, что я указал в вызове SnmpSendMsg.
3) SnmpSendMsg-это асинхронный вызов. Могу ли я немедленно повторно использовать PDU или мне нужно сначала дождаться завершения отправки. Другими словами, делает ли вызов копию PDU и сущностей или использует их непосредственно. Я подозреваю, что именно это вызывает проблему 1 выше.
4) Есть ли альтернативная SNMP-библиотека, которую я могу использовать?
Это среда, которую я пытаюсь использовать:
Язык : C++ (неуправляемый)
Операционная система: Windows 7 и 10
Версия SNMP : v2c
Что я уже пробовал:
Попробовал объявить PDU как переменную-член.
Попробовал явно указать исходную сущность.
Попробовал создать другой сеанс для получателя и отправителя.
KarstenK
3.Вы не должны повторно использовать ресурс, когда он еще не сделан.
Anorexic Tribble
Но как я узнаю, когда это будет сделано с ресурсом?