阅读:3925回复:2
SnmpMgrRequest出错,哪位大虾帮忙看一下,我急啊
我主要想实现获取指定机器的网络流量,这段代码我是想获取该机器所收到的所有数据包的数量,但SnmpMgrRequest返回是0,用getlasterror测试,错误码是8,不知道怎么回事?
#include \"winsnmp.h\" #include \"mgmtapi.h\" ................... void go(void) { unsigned long nMajorVersion; unsigned long nMinorVersion; unsigned long nLevel; unsigned long nTranslateMode; unsigned long nRetransmitMode; //1.3.6.1.2.1.4.3 unsigned char OID_ipAdEntMask[] =\"agent\";//{ 1, 3, 6, 1, 2, 1, 4 , 20, 1 ,3 }; smiOCTETS temptext={sizeof(OID_ipAdEntMask)/sizeof(unsigned char),OID_ipAdEntMask }; smiLPCOCTETS otstr=&temptext; CString OID_ipMask=\"1.3.6.1.2.1.4.20.1.3\"; smiOID destOID; CHAR ServerAddress[]=\"11.36.225.190\"; CHAR ClientAddress[]=\"11.36.229.181\"; HSNMP_SESSION nSession; HSNMP_CONTEXT nHandle,ngetHandle; HSNMP_ENTITY nEntityClient,ngetEntityClient; HSNMP_ENTITY nEntityServer,ngetEntityServer; HSNMP_VBL nVBL; HSNMP_PDU nPud,ngetPud; //return to the application the version of the Windows SNMP Application Programming Interface(WINSNMP API) /* SnmpStartup(&nMajorVersion,&nMinorVersion,&nLevel,&nTranslateMode,&nRetransmitMode); //debug begin--------------------------------- TRACE(\"nMajorVersion=%d\\n\",nMajorVersion); TRACE(\"nMinorVersion=%d\\n\",nMinorVersion); TRACE(\"nLevel=%d\\n\",nLevel); TRACE(\"nTranslateMode=%d\\n\",nTranslateMode); TRACE(\"nRetransmitMode=%d\\n\",nRetransmitMode); //debug end-----------------------------------*/ LPSNMP_MGR_SESSION pp; //*----------------------------------------------------------------------------- UINT OID_ipInReceives[] = {1, 3, 6, 1, 2, 1, 4, 3}; AsnObjectIdentifier MIB_ipInReceives = {sizeof(OID_ipInReceives) / sizeof(UINT), OID_ipInReceives}; RFC1157VarBindList varBindList; //SnmpVarBind varBind[2]; AsnInteger errorStatus; AsnInteger errorIndex; AsnObjectIdentifier MIB_NULL = {0, 0}; int ret; UINT NICCount = 0, ifIndex = 0, i,successflag; varBindList.list = NULL; varBindList.len = 1; if( ( varBindList.list = (RFC1157VarBind *) SNMP_realloc (varBindList.list,sizeof(RFC1157VarBind))) == NULL) { successflag = 0; return; } varBindList.list[varBindList.len - 1].name = MIB_ipInReceives; varBindList.list[varBindList.len - 1].value.asnType =ASN_NULL; //SnmpUtilOidCpy(&varBind[0].name, &MIB_ipInReceives); if(pp=SnmpMgrOpen(\"11.36.225.190\",\"4006\",200,3)) TRACE(\"SnmpMgrOpen execute succeed\\n\"); if(ret=SnmpMgrRequest(pp,SNMP_PDU_GETNEXT,&varBindList, &errorStatus, &errorIndex)) TRACE(\"SnmpMgrRequest execute succeed\\n\"); } } |
|
沙发#
发布于:2003-05-07 22:31
上一段代码比较乱,改正如下,请指教
#include \"winsnmp.h\" #include \"mgmtapi.h\" ................... void go(void) { #include \"winsnmp.h\" #include \"mgmtapi.h\" unsigned long nMajorVersion; unsigned long nMinorVersion; unsigned long nLevel; unsigned long nTranslateMode; unsigned long nRetransmitMode; HSNMP_SESSION nSession; HSNMP_CONTEXT nHandle; HSNMP_ENTITY nEntityClient; HSNMP_ENTITY nEntityServer; HSNMP_VBL nVBL; HSNMP_PDU nPud; SnmpStartup(&nMajorVersion,&nMinorVersion,&nLevel,&nTranslateMode,&nRetransmitMode); //debug begin--------------------------------- TRACE(\"nMajorVersion=%d\\n\",nMajorVersion); TRACE(\"nMinorVersion=%d\\n\",nMinorVersion); TRACE(\"nLevel=%d\\n\",nLevel); TRACE(\"nTranslateMode=%d\\n\",nTranslateMode); TRACE(\"nRetransmitMode=%d\\n\",nRetransmitMode); //debug end----------------------------------- LPSNMP_MGR_SESSION pp; //*----------------------------------------------------------------------------- UINT OID_ipInReceives[] = {1, 3, 6, 1, 2, 1, 4, 3}; AsnObjectIdentifier MIB_ipInReceives = {sizeof(OID_ipInReceives) / sizeof(UINT), OID_ipInReceives}; RFC1157VarBindList varBindList; //SnmpVarBind varBind[2]; AsnInteger errorStatus; AsnInteger errorIndex; AsnObjectIdentifier MIB_NULL = {0, 0}; int ret; UINT NICCount = 0, ifIndex = 0, i,successflag; varBindList.list = NULL; varBindList.len = 1; if( ( varBindList.list = (RFC1157VarBind *) SNMP_realloc (varBindList.list,sizeof(RFC1157VarBind))) == NULL) { successflag = 0; return; } varBindList.list[varBindList.len - 1].name = MIB_ipInReceives; varBindList.list[varBindList.len - 1].value.asnType =ASN_NULL; if(pp=SnmpMgrOpen(\"11.36.225.190\",\"4006\",200,3)) TRACE(\"SnmpMgrOpen execute succeed\\n\"); if(ret=SnmpMgrRequest(pp,SNMP_PDU_GETNEXT,&varBindList, &errorStatus, &errorIndex)) TRACE(\"SnmpMgrRequest execute succeed\\n\"); } |
|
板凳#
发布于:2003-07-09 17:12
为何没有人关注?
8的意思是不是密码不对? |
|