【发布时间】:2015-06-26 06:01:24
【问题描述】:
我有一个使用 Indy 组件进行 TCP 通信的 c++ 应用程序。 现在我需要实现 SNMP 代理(?)只是为了响应请求 通过 SNMP 了解应用程序的状态。 我也决定使用 Indy 组件来完成这项任务。 也许有一些标准的方式来实现这一点?
获取一些值的 SNMP 组件效果很好。 但我找不到一些如何通过 snmp 从我的应用程序返回值的示例。
根据 Remy Lebeau 的建议,我已经开始实施 SendTrap。
void __fastcall TMainForm::btSendTrapClick(TObject *Sender)
{
UnicodeString myEnterprise = "1.5.5.5.5.5.5.5";
UnicodeString eventType = "1.5.5.5.5.5.5.5.1";
UnicodeString eventDistance = "1.5.5.5.5.5.5.5.2";
TIdSNMP * idSnmp = 0;
TSNMPInfo * infoSnmp = 0;
idSnmp = new TIdSNMP(NULL);
infoSnmp = new TSNMPInfo(idSnmp);
idSnmp->Host = edHost->Text;
idSnmp->Community = "public";
infoSnmp->Host = edHost->Text;
infoSnmp->Community = "public";
infoSnmp->Enterprise = myEnterprise;
infoSnmp->GenTrap = 6; // I've met such values
infoSnmp->SpecTrap = 1; // somewhere in inet
infoSnmp->MIBAdd(eventType,"ftCritical");
infoSnmp->MIBAdd(eventDistance,"2.357");
idSnmp->SendTrap();
delete idSnmp;
}
但是当我运行应用程序时,我的系统中没有 udp 活动。 当我运行这样的事情时
idSnmp->QuickSend(sysDescr, "public", edHost->Text, val);
wireshark 节目 192.168.100.21 192.168.100.19 SNMP 82 获取请求 1.3.6.1.2.1.1.3.0
但是当idSnmp->SendTrap()wireshark 什么都看不到
(wireshark 的过滤器在这两种情况下都是 UDP 端口范围 161-162)
我很高兴看到一些关于我的代码的评论,或者可能是 SendTrap 的工作示例 :)
【问题讨论】:
标签: c++builder snmp indy