snmp++開發實例一


1.官網下載

snmp開發,首先需要機器已經安裝了snmp服務,這方面的資料網上比較完備,安裝的時候注意每少一個文件,網上都可以下載到,這樣可以自己形成一個包,供以后使用。只要最后snmp的服務開啟就可以使用snmp服務了(剛開始trap服務可能是未開啟的)
snmp++官網http://www.agentpp.com/,選擇自己需要的開發包,我這里下載了snmp++v3.2.25.tar.gz,如果需要支持v3版本的數據傳送功能,還需要下載libdes-l-4.01a。准備工作做完之后,我們的目的就是要生成需要的兩個lib庫文件。

2.編譯生成libdes.lib

   2.1在vs2010中新建一個win32項目,選擇靜態庫,空項目,不需要編譯頭

2.2將所有需要的頭文件和源文件均加入進來,截圖如下:

   2.3 生成解決方案,這時會在工程目錄下的debug目錄下出現一個lib文件,正是我們需要的

3.生成snmplib。

   3.1再新建一個同樣的win32項目,靜態庫,空項目,不需要編譯頭

   3.2將解壓后的snmp++/src目錄下和libdes-l-4.01a下所有的.cpp都加入到源文件當中,同時還要將所有的.h文件加入,可以直接使用項目屬性—C/C++--常規—附加包含目錄,將頭文件的目錄加進來


   3.3接下來,就生成解決方案,同樣也會生成對應的lib庫

4.拷貝snmplib.lib,libdes.lib,ws2_32.lib

將生成的兩個lib文件及下載的ws2_32.lib都拷貝到vs2010安裝目錄的lib文件夾下,方面后續snmp開發

5.建立測試項目

   5.1新建項目,選擇win32控制台應用程序TestCip。

   5.2導入頭文件。

因為要用到snmp,所以還需要將snmp所需要的頭文件加入到附加包含目錄中,方便起見,可以將libdes的幾個頭文件均拷貝到snmp++的include目錄下,而include下的snmp_pp文件夾是snmp單獨的頭文件,這樣就只需引入一次頭文件就可以了。
 

5.3加入lib庫。

在項目屬性中,鏈接器/輸入中加入這樣幾項內容
 

5.4編寫測試程序

[cpp]  view plain  copy
 
 print?
  1. #include <iostream>  
  2. #include "snmp_pp/snmp_pp.h"  
  3.   
  4. using namespace std;  
  5.   
  6. #define SYSDESCR "1.3.6.1.2.1.1.1.0" // Object ID for System Descriptor  
  7.   
  8.   
  9. void get_system_descriptor(){  
  10.       
  11.     int status;//return status  
  12.     CTarget ctarget((IpAddress)"192.168.1.111");  
  13.     Vb vb(SYSDESCR);//SNMP++ variable Binding  
  14.     Pdu pdu;//SNMP ++ pdu  
  15.     //--------[Construct a SNMP++ SNMP Object--------------  
  16.     Snmp snmp(status);//create a snmp  session  
  17.     if (status != SNMP_CLASS_SUCCESS)  
  18.     {  
  19.         cout << snmp.error_msg(status);//if fail,print error string  
  20.         return;  
  21.     }  
  22.     //---------[Invoke a SNMP++ Get]------------------------  
  23.     pdu += vb;//add the variable binding  
  24.     if ((status = snmp.get(pdu,ctarget)) != SNMP_CLASS_SUCCESS)  
  25.     {  
  26.         cout << snmp.error_msg(status);  
  27.     }  
  28.     else {  
  29.         pdu.get_vb(vb,0);//extract the variable binding  
  30.         cout << "System Descriptor = " << vb.get_printable_value();  
  31.     }  
  32.       
  33. }  
main函數,這里就不寫了,直接調用這個函數就OK

6.運行結果

 
4


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM