DoubleLi

qq: 517712484 wx: ldbgliet

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  4737 随笔 :: 2 文章 :: 542 评论 :: 1615万 阅读
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

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
posted on   DoubleLi  阅读(5149)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
历史上的今天:
2016-09-21 iwpriv
2016-09-21 ifconfig报错:SIOCSIFFLAGS: Operation not permitted
2016-09-21 flash文件制作笔记
2016-09-21 wpa_supplicant移植
2016-09-21 无线网卡工作模式笔记
2016-09-21 boa配置文件详解
2016-09-21 hostapd移植与使用
点击右上角即可分享
微信分享提示