谢谢各位

解决方案 »

  1.   

    异步?你可以把请求放到一个线程中,然后等待返回的回调callback
      

  2.   

    用snmp++发送get请求示例          
        
      #include   “snmp_pp.h”   
      #define   SYSDESCR   “1.3.6.1.2.1.1.1.0”     //   Object   ID   for   System   Descriptor   
        
      void   get_system_descriptor()   
      {   
          int   status;                 //   return   status      
          CTarget   ctarget(   (IpAddress)   “10.4.8.5”);//   SNMP++   v1   target   
          Vb   vb(   SYSDESCR);             //   SNMP++   Variable   Binding   
          Pdu   pdu;                    //   SNMP++   PDU   
        
        //-------[   Construct   a   SNMP++   SNMP   Object   ]---------------------------   
          Snmp   snmp(   status);            //   Create   a   SNMP++   session   
          if   (   status   !=   SNMP_CLASS_SUCCESS)     
        
              {   //   check   creation   status   
         cout   <<   snmp.error_msg(   status);    // if   fail,   print   error   string   
         return;    
        
              }   
        
          //-------[   Invoke   a   SNMP++   Get   ]---------------------------------------   
          pdu   +=   vb;                   // add   the   variable   binding   
          if   ( (status   =   snmp.get( pdu,   ctarget))   !=   SNMP_CLASS_SUCCESS)   
         cout   <<   snmp.error_msg(   status);   
          else     
        
              {   
         pdu.get_vb(   vb,0);           //   extract   the   variable   binding   
         cout   <<   “System   Descriptor   =   ”<<   vb.get_printable_value();    
        
              } //   print   out   
        
      };    
      

  3.   

    异步体现在这里 
    if  ( (status  =  snmp.get( pdu,  ctarget))  !=  SNMP_CLASS_SUCCESS)
    snmp.get( pdu,  ctarget)异步函数有四个参数,第三个就是指定回调函数的。
    你的代码是同步调用方式,效率不高,谢谢。
      

  4.   


    哎,惭愧,我就是不会定义这个回调函数。
    函数的类型都有 ,我就是不会自己定义。
    typedef void (*snmp_callback)( int,                   // reason                            Snmp*,                // session handle                           Pdu &,                 // Pdu passed in                           SnmpTarget &,  // source target                           void * );               // callback data
    谁叫我怎么写?