SNMP++ 00-开发准备篇
来源:互联网 发布:漫步者h297 淘宝假货 编辑:程序博客网 时间:2024/06/07 04:42
阅读完本文你可以学到:
(1)在 Windows 平台下如何搭建与 SNMP 代理进行通信的开发环境(支持 SNMP V3),并给出测试程序。
一、搭建与 SNMP 代理进行通信的开发环境(支持 SNMP V3)(在 VS2013 下演示)
1. 下载 SNMP++ 和 LIBDES
SNMP++官方下载地址:http://www.agentpp.com/download.html#AGENTPP,如图1-1:
图1-1
请注意:
我一开始使用的是 SNMP++3.3.7,但编译后出现有些文件打不开,其中路径不对的问题可以 easy 解决,但有些文件根本就不存在。后来改用 snmp++v3.2.25(下载地址:http://download.csdn.net/detail/wohenfanjian/9507541),最后测试成功。下面详细记录从无到测试成功的每一个过程。
重申一遍,以下所有内容使用的是 snmp++v3.2.25.tar.gz 及 libdes-l-4.01a.tar.gz,以下内容一定不适用于 SNMP++3.3.7.tar.gz,至于 libdes的的其他版本是否适用尚未验证。也就是说,如果你使用的不是 snmp++v3.2.25.tar.gz 及 libdes-l-4.01a.tar.gz,我并不能保证阅读完本文可使你获得正确的测试结果。
2. 生成 snmp++lib 静态 lib 文件(注:snmp++lib 为你要生成的 lib 的文件名,可自拟)
(1)新建一个“Win32”项目,如图2-1:
图2-1
(2)只选择“静态库”,其余的都不选,如图2-2:(虽然看到有些博客说加上“预编译头”最后也可以成功,但是本人强烈建议“尽最大可能降低你所生成库的依赖项”)
图2-2
(3)解压先前下载好的压缩包 (下载地址:http://download.csdn.net/detail/wohenfanjian/9507541)并分别解压 libdes-l-4.01a.tar.gz 和 snmp++v3.2.25.tar.gz。如图2-3:
图2-3
(4)将文件夹 libdes-l-4.01 和 snmp++v3.2.25 拷贝到你刚刚建立的 snmp++lib 工程中,如图2-4:
图2-4
(5)添加源文件。将 snmp++lib\snmp++v3.2.25\snmp++\src 下的所有源文件添加到工程中,并将 snmp++lib\libdes-l-4.01a\libdes 下的所有源文件添加到工程中,如图2-5:
图2-5
(6)添加头文件。将 snmp++lib\snmp++v3.2.25\snmp++\include\snmp_pp 下的所有头文件添加到工程中,并将 snmp++lib\libdes-l-4.01a\libdes 下的所有头文件添加到工程中。添加方法为:项目->snmp++lib属性页->C/C++->常规->附加包含目录,如图2-6:
图2-6
(7)生成解决方案,如图2-7:
图2-7
(8)生成解决方案成功后在该工程中的Debug下找到生成的 snmp++lib.lib 文件,如图2-8:
图2-8
3. 生成 libdeslib 静态 lib 文件(和生成 snmp++lib.lib 的方法一样)。
4. 在 windows 平台下编写第一个与SNMP代理进行通信的控制台程序(使用前面生成的 snmp++lib.lib 和 libdeslib.lib)。
(1)新建一个控制台程序,项目名称为 snmptest
(2)在该工程下新建文件夹 snmp++,用于存放相关头文件及库文件,如图2-9:
图2-9
在建好 snmp++ 文件夹后,在 snmp++文件夹 下建立 include文件夹,用于存放相关头文件,并建立 lib 文件夹,用于存放 snmp++lib.lib 和 libdeslib.lib。如图2-10:
2-10
include 文件夹中存放 snmp++v3.2.25\snmp++\include\snmp_pp (这是前面解压的 snmp++v3.2.25.tar.gz)中所有的头文件及 libdes-l-4.01a\libdes(这是前面解压的 libdes-l-4.01a.tar.gz)中的所有头文件。
lib 文件夹中存放 snmp++lib.lib 和 libdeslib.lib。
(3)配置该工程的属性:项目->snmptest属性->链接器->输入。在附加依赖项中添加 ws2_32.lib;snmp++\lib\libdeslib;snmp++\lib\snmp++lib.lib; 。如图2-11:
图2-11
(4)测试程序为:
// snmptest.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include "snmp++\include\snmp_pp.h"#include <iostream>using namespace std;int _tmain(int argc, _TCHAR* argv[]){Snmp::socket_startup();CTarget target(IpAddress("10.116.2.18"), "private-xxq", "private-xxq");target.set_version(version1);Vb vb("1.3.6.1.2.1.1.1.0");Pdu pdu;pdu += vb;int status;Snmp snmp(status);if (SNMP_CLASS_SUCCESS != status){cout << snmp.error_msg(status) << endl;return -1;}cout << "目的IP:" << target.get_address().get_printable() << " 版本号:" << target.get_version() << endl;cout << "read共同体:" << target.get_readcommunity() << " write共同体:" << target.get_writecommunity() << endl;if ( (status = snmp.get(pdu, target)) == SNMP_CLASS_SUCCESS ){pdu.get_vb(vb, 0);cout << "System Descriptor =" << vb.get_printable_value() << endl;}else{cout << snmp.error_msg(status) << endl;return -1;}Snmp::socket_cleanup();return 0;}
(5)启动并配置 SNMP代理。
参考我的另一篇博文 http://blog.csdn.net/wohenfanjian/article/details/51265047 。(注意 SNMP代理中共同体的名称必须与测试程序的共同体名称保持一致)
(6)在 SNMP代理启动并配置好后,运行测试程序。结果如下:本文生成的完整的工程见:http://download.csdn.net/detail/wohenfanjian/9507690。要成功地与本地SNMP代理进行通信,除了该工程外,你还需要对本地 SNMP代理进行配置(可参考本文相关部分)。如果你遇到 SNMP request time out问题,可参考http://blog.csdn.net/wohenfanjian/article/details/51290275。
- SNMP++ 00-开发准备篇
- snmp开发
- SNMP 开发
- SNMP -- 开发
- snmp开发
- SNMP从入门到开发:基础篇
- SNMP从入门到开发:基础篇
- SNMP从入门到开发:基础篇
- SNMP从入门到开发:进阶篇
- SNMP从入门到开发:基础篇
- SNMP从入门到开发:基础篇
- SNMP从入门到开发:进阶篇
- SNMP从入门到开发:进阶篇
- 用net-snmp开发snmp代理客户端
- NET-SNMP开发记录
- SNMP代理简单开发
- net-snmp开发简介
- SNMP Agent开发
- C++中类访问权限控制
- Linux is not Matrix——saltstack批量管理服务器
- C语言写的简单的单向链表
- hadoop2.x常用端口、定义方法及默认端口、hadoop1.X端口对比
- Android基础之常用布局介绍
- SNMP++ 00-开发准备篇
- 用python实现socket通信
- Linux下Google Test (GTest)测试环境搭建步骤
- GDAL的OGR工具ogr2ogr使用参数说明
- hdu 5667 Sequence(矩阵快速幂+费马小定理+快速幂)
- 打劫房屋 III
- Hibernate入门
- MFC excel修改类
- 【BZOJ1858】[Scoi2010]序列操作【线段树】