可能是因为陷阱没有被正确地注册。以下是一个示例代码片段,显示如何创建和在v3上注册陷阱:
#include
#include
class MyTrapHandler : public Agentpp::MibEntry {
public:
MyTrapHandler() : MibEntry("myTrapHandler", READWRITE) {}
virtual ~MyTrapHandler() {}
virtual void trap(const Agentpp::SnmpSyntax& value){
// Handle trap here
}
};
int main(int argc, char* argv[])
{
// Initialize Agent++
Agentpp::Agent agent("myAgent");
// Register MyTrapHandler
MyTrapHandler myTrapHandler;
agent.getMib().add(myTrapHandler);
// Start the Agent++
agent.start();
// Wait for incoming requests
Agentpp::RequestList requests;
Agentpp::Snmpx snmp;
while (true) {
snmp.receive(requests, 1000);
agent.processRequests(requests);
}
// Stop the Agent++
agent.stop();
return 0;
}
请注意,陷阱处理程序必须是公共MibEntry,并覆盖MibEntry::trap方法以处理陷阱。
还要确保您的设备已正确配置以接收SNMP陷阱。