程序如下(自己写也可以,用c\c++\c#):
#include"stdafx.h"
#include"afx.h"
#include"snmp_pp.h"
#include"cstringt.h"
#include
using namespace std;
#pragma comment(lib,"ws2_32.lib")
#pragma comment(lib,"snmp_pp.lib")
void type(Oid id)
{
CString str;
str=id.get_printable();
// str.Format(("%s",id.get_printable()));
switch(_ttoi(str.Right(1)))
{
case 1:
str="ColdStart";
break;
case 2:
str="WarmStart";
break;
case 3:
str="LinkDown";
break;
case 4:
str="LinkUp";
break;
case 5:
str="AuthenticationFailure";
break;
case 6:
str="EgpNeighborLoss";
break;
default:
str="EnterpriseSpecific";
break;
}
wcout<<"错误类型:"<<(LPCTSTR)str<
void callback(int reason,Snmp *snmp,Pdu &pdu,SnmpTarget &target,void *cd)
{
Vb nextVb;
int pdu_error;
GenAddress addr;
target.get_address(addr);
UdpAddress from(addr);
CTime time=CTime::GetCurrentTime();
wcout<<"Time:"<<(LPCTSTR)time.Format("%Y-%m-%d %H:%M:%S")<
pdu_error=pdu.get_error_status();
if(pdu_error)
{
cout<<"Response contains error:"<
Oid id;
pdu.get_notify_id(id);
cout<<"ID:"<
for(int i=0;i
pdu.get_vb(nextVb,i);
cout<<"oid:"<
if(pdu.get_type()==sNMP_PDU_INFORM)
{
cout<<"pud type:"<
pdu.set_vb(nextVb,0);
snmp->response(pdu,target);
}
type(id);
cout<
void main(int argc,char **argv)
{
int trap_port;
if(argc<2)
trap_port=162;
else
trap_port=atoi(argv[1]);
int status;
snmp::socket_startup();
Snmp snmp(status);
if(status!=SNMP_CLASS_SUCCESS)
{
cout<<"SNMP++ Session Create Fail,"<
OidCollection oidc;
TartetCollection targetc;
cout<<"Trying to register for traps on port"<
status=snmp.notify_register(oidc,targetc,callback,NULL);
if(status!=SNMP_CLASS_SUCCESS)
{
cout<<"Error register for notify ("<
}
else
cout<<"Waiting for traps/informs..."<
snmp.start_poll_thread(1000);
cout<<"press return to stop\n";
getc(stdin);
snmp.stop_poll_thread();
Snmp::socket_cleanup();
}
呵呵 忘了说邮箱1015047670@qq.com
谢谢!