Я использую c ++ builderXE с Indy 10.5.7 и пытаюсь получить ловушку от другого агента snmp.
У меня нет информации, описывающей, как сделать программу для приема ловушки.
Ниже вы можете найти фрагмент кода, который я пытаюсь использовать сейчас.
Метод ReceiveTrap () всегда возвращает 0, что означает, что данные не получены.
Я протестировал конфигурацию ПК с другой программой, которую я сделал несколько лет назад с использованием запасного API, и получено прерывание, поэтому я не знаю, что это должна быть проблема конфигурации.
Есть ли у вас какие-нибудь предложения относительно того, что я ошибаюсь в приведенной ниже рутине?
void __fastcall TForm1::LabelReceiveTrapClick(TObject * Sender)
{
static bool status = false;
int ists;
String Fun = "[SimpleReceiveTrap] ";
TSNMPInfo * infoSnmp = 0;
try
{
status = !status;
if (status)
{
std::auto_ptr< TIdSNMP >clientSnmp(new TIdSNMP(NULL));
clientSnmp->Community = "public";
clientSnmp->ReceiveTimeout = 1000;
clientSnmp->Binding->Port = 162;
while (status)
{
Application->ProcessMessages();
ists = clientSnmp->ReceiveTrap();
Mylog(L"%s ReceiveTrap status = [%d]", Fun.c_str(), ists);
if (ists > 0)
{
infoSnmp = clientSnmp->Trap;
}
}
}
}
catch (Exception & ex)
{
Mylog(L"%s ERROR", Fun.c_str(), ex.Message.c_str());
}
}