我看了SnmpUtil.exe 的例子,可是他所提供的函数(结果输出)是在DOS底下的用SnmpUtilPringAsn()函数,我想在编辑控件中将结果输出,怎么办?
(其实问题就是,有没有将AsnAny 格式转换成可输出的字符格式)
望赐教,必送上分!虽然我刚来,没多少分!别见怪!

解决方案 »

  1.   

    天那@
    等这么长时间就等了个圣诞的祝福吗?
    请教高手!
    问题重复::
            我以用SnmpSgrRequest() GET到了值,可是不知用什么函数将结果输出,或怎样编写代码使之输出??
       附: 不用SnmpUtilPrint() 这个函数是在Dos底下输出的!!!!!!!!
        望高手出照!!!
      

  2.   

    void CSnmp::PrintAsnAny(char *sp, AsnAny *pAny)
    {
    ASSERT(sp);
    char *  str=NULL;
    switch(pAny->asnType)
    {
    case ASN_INTEGER:
    sprintf(sp,"%ld",pAny->asnValue.number);
    break;
    case ASN_UNSIGNED32:
    sprintf(sp,"%lu",pAny->asnValue.unsigned32);
    break;
    case ASN_COUNTER64:
    sprintf(sp,"%I64u",pAny->asnValue.counter64);
    break;
    case ASN_OCTETSTRING:
    _snprintf(sp,pAny->asnValue.string.length,"%s",pAny->asnValue.string.stream);
    sp[pAny->asnValue.string.length]='\0';
    break;
    case ASN_BITS:
    _snprintf(sp,pAny->asnValue.bits.length,"%s",pAny->asnValue.bits.stream);
    sp[pAny->asnValue.string.length]='\0';
    break;
    case ASN_OBJECTIDENTIFIER:
    SnmpMgrOidToStr(&(pAny->asnValue.object),&str);
    sprintf(sp,"%s",str);
    if(str)SnmpUtilMemFree((LPVOID)str);
    break;
    case ASN_SEQUENCE:
    //显示一个表对象
    _snprintf(sp,pAny->asnValue.sequence.length,"%s",pAny->asnValue.sequence.stream);
    sp[pAny->asnValue.string.length]='\0';
    break;
    case ASN_IPADDRESS:
    if(pAny->asnValue.address.length==4)
    {
    sprintf(sp,"%d.%d.%d.%d",(int)pAny->asnValue.address.stream[0],
    (int)pAny->asnValue.address.stream[1],
    (int)pAny->asnValue.address.stream[2],
    (int)pAny->asnValue.address.stream[3]);
    }
    break;
    case ASN_COUNTER32:
    sprintf(sp,"%lu",pAny->asnValue.counter);
    break;
    case ASN_GAUGE32:
    sprintf(sp,"%lu",pAny->asnValue.gauge);
    break;
    case ASN_TIMETICKS:
    sprintf(sp,"%lu",pAny->asnValue.ticks);
    break;
    case ASN_OPAQUE:
    //显示一个模糊对象
    _snprintf(sp,pAny->asnValue.arbitrary.length,"%s",pAny->asnValue.arbitrary.stream);
    sp[pAny->asnValue.string.length]='\0';
    break;

    default:
    //是什么新类型?
    sp="";
    break;
    }
    }