Anorexic Tribble Ответов: 0

Мне нужна помощь с 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

Но как я узнаю, когда это будет сделано с ресурсом?

0 Ответов