首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于 SNMP

2012-03-03 
高手进 关于 SNMP发送没问题,接受部分从一开始就没有值!boolReceive(HSNMP_VBL&hVbl){HSNMP_ENTITYhSrcEnt

高手进 关于 SNMP
发送没问题,接受部分从一开始就没有值!
bool   Receive(HSNMP_VBL   &hVbl)
{
HSNMP_ENTITY   hSrcEntity=(HSNMP_ENTITY)NULL;
HSNMP_ENTITY   hDestEntity=(HSNMP_ENTITY)NULL;
HSNMP_CONTEXT   hContext=(HSNMP_CONTEXT)NULL;
HSNMP_PDU   hPdu=(HSNMP_PDU)NULL;
smiOID   oid1;
smiVALUE   vaule;
DWORD   index,Counts;
char*   outoid=NULL;
//接收消息
if(SnmpRecvMsg(hSession,&hSrcEntity,&hDestEntity,&hContext,&hPdu)==SNMPAPI_FAILURE)
{
CString   strError;
switch   (SnmpGetLastError(hSession))
{
case   SNMPAPI_NOOP:
strError= "Session当前没有消息在队列中! ";
break;
case   SNMPAPI_TL_INVALID_PARAM:
strError= "A   network   transport   layer   function   call   received   an   invalid   input   parameter ";
default:
break;
}
MessageBox(NULL, "消息接收失败! "+strError, "test ",MB_OK);
return   FALSE;
}

smiINT   PDU_type;
smiINT   error_status;
smiINT   error_index;
//提取数据报
if(SnmpGetPduData(hPdu,&PDU_type,NULL,&error_status,&error_index,&hVbl)==SNMPAPI_FAILURE)
{
MessageBox(NULL, "SnmpGetPduData   failed ", "提示 ",MB_OK);
return   FALSE;
}
//计算返回列表数目
Counts=SnmpCountVbl(hVbl);
for(   index   =   0;   index   <=   Counts;   index++   )
{
//取得绑定表中的值
SnmpGetVb(hVbl,Counts,&oid1,&vaule);
memset(   outoid,   0,   MAX_BUFFER_LEN   );
SnmpOidToStr(&oid1,MAX_BUFFER_LEN,outoid);
}
//释放句柄
SnmpFreeEntity(hSrcEntity);
SnmpFreeEntity(hDestEntity);
SnmpFreePdu(hPdu);
SnmpFreeVbl(hVbl);
SnmpCleanup();
return   TRUE;
}
};

有人指出:
LPHSNMP_ENTITY   recsrcEntity=0;
LPHSNMP_ENTITY   recdisEntity=0;
LPHSNMP_CONTEXT   reccontext=0;
LPHSNMP_PDU   recPDU=0;
SNMPAPI_STATUS   recStat=SnmpRecvMsg(Session,recsrcEntity,recdisEntity,reccontext,recPDU);     //接受消息

是不是应该建立一个实体类型的变量,然后把引用传递给函数?
我对此还不是很明白   请详细告之!



[解决办法]
楼主的签名还真是强啊

热点排行