在一篇论文上看到了snmp++开发包使用的一个小例子,拿来调试一下。main函数主要代码如下:
#define SYSDESCR "1.3.6.1.2.1.1.1.0" //ObjectID for system descriptor
#define SYSOBJECTID "1.3.6.1.2.1.1.2.0" //ObjectID for system object ID
#define SYSCONTACT "1.3.6.1.2.1.1.4.0" //ObjectID for system contact
int main() {
int status;
Vb vb[3];
Pdu pdu;
vb[0].set_oid(SYSDESCR);
vb[1].set_oid(SYSOBJECTID);
vb[2].set_oid(SYSCONTACT);
pdu.set_vblist(vb,3);
CTarget ctarget((IpAddress) "192.168.0.1"); //被管代理的ip
Snmp snmp(status);
if((status=snmp.get(pdu, ctarget))!=SNMP_CLASS_SUCCESS)
cout<<snmp.error_msg(status);
else {
pdu.get_vblist(vb,3);
for(int i=0;i<3;i++)
cout<<vb[i].get_printable_value()<<endl;
}
return 0;
}
加入所需的头文件"snmp_pp.h"后,compile通过,build失败,报类似如下错误:
error LNK2001: unresolved external symbol "public: char const * __thiscall Vb::get_printable_value(void)const " (?get_printable_value@Vb@@QBEPBDXZ)
。。。。
fatal error LNK1120: 33 unresolved externals
查资料,原来没有引入所需库文件,引入类库:snmp_pp.lib 动态链接库:snmp_pp.dll,再rebuild,成功。
运行后没有得到正确的输出,错误输出如下:
20100928.17:39:51: 3464: (4)DEBUG : SNMPMessage: return value for build message: (0)
SNMP++: Transport operation failed
继续查资料,发现原因是由于snmp++开发包利用windows socket通信。这里自然应该先引入相关头文件和类库,再加载套接字库。最终代码如下:
#include <iostream>
#include <winsock2.h>
#include "snmp_pp.h"
using namespace std;
#define SYSDESCR "1.3.6.1.2.1.1.1.0" //ObjectID for system descriptor
#define SYSOBJECTID "1.3.6.1.2.1.1.2.0" //ObjectID for system object ID
#define SYSCONTACT "1.3.6.1.2.1.1.4.0" //ObjectID for system contact
#pragma comment(lib, "snmp_pp.lib")
#pragma comment(lib, "ws2_32.lib")
int main() {
//加载套接字库
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD(1, 1);
err = WSAStartup(wVersionRequested, &wsaData);
if(err != 0) {
return 1;
}
if(LOBYTE(wsaData.wVersion) != 1 || HIBYTE(wsaData.wVersion) != 1) {
WSACleanup();
return 1;
}
//加载结束
int status;
Vb vb[3];
Pdu pdu;
vb[0].set_oid(SYSDESCR);
vb[1].set_oid(SYSOBJECTID);
vb[2].set_oid(SYSCONTACT);
pdu.set_vblist(vb,3);
CTarget ctarget((IpAddress)"10.150.0.84");
Snmp snmp(status);
if((status=snmp.get(pdu, ctarget))!=SNMP_CLASS_SUCCESS)
cout<<snmp.error_msg(status)<<endl;
else {
pdu.get_vblist(vb,3);
for(int i=0;i<3;i++)
cout<<vb[i].get_printable_value()<<endl;
}
return 0;
}
运行结果如下:
20100928.17:44:26: 3956: (4)DEBUG : SNMPMessage: return value for build message: (0)
Hardware: x86 Family 6 Model 15 Stepping 6 AT/AT COMPATIBLE -Software: Windows
2000 Version 5.1 (Build 2600 Multiprocessor Free)
1.3.6.1.4.1.311.1.1.3.1.1
OK,搞定。
分享到:
相关推荐
"免费的SNMP开发包"可能是一个额外的压缩文件,提供了更多的示例、库文件或者其他开发工具。 总的来说,这个"snmp++开发资源包"是学习和开发SNMP应用的宝贵资源。它不仅提供了实际的代码示例,还包含了解释性的文档...
SNMP++是一种面向对象的开发包,用于简化简单网络管理协议(SNMP)的网络管理功能。它将SNMP协议原理与C++语言相结合,提供了一系列可移植的C++类库,从而构建了SNMP++框架。这些类库包含了对SNMPv1和SNMPv2版本的...
SNMP++是由HP公司开发的一套C++类库,旨在将SNMP编程的相关部分面向对象化,极大地简化了网络管理软件的开发过程。它提供了丰富的类和成员函数,使得开发者可以更高效地创建、管理和监控网络设备。 ##### 2.2 类与...
SNMP++ 3.4.6 动态库是一个用于开发网络管理应用程序的C++库,它是基于标准的SNMP(简单网络管理协议)构建的。这个库特别针对mingw编译环境进行了优化,适用于使用Qt开发平台的开发者。本文将深入探讨SNMP++、...
SNMP++中文文档是一份专为HP SNMP++开发包编写的详细指南,它为使用C++进行简单网络管理协议(SNMP)编程提供了API接口。SNMP++是基于面向对象设计的,将SNMP协议的复杂性与C++的强大功能相结合,为网络管理提供了...
文档中可能包含了一个简单的SNMP++使用示例,并对这个例子进行了详细的分析,以帮助开发者理解如何在实际项目中应用SNMP++。 3.SNMP++特性: 3.1.完整的一套SNMPC++类: SNMP++提供了一整套类来处理SNMP协议中的各种...
SNMP++是一个由HP公司开发的C++库,专门用于构建SNMP(简单网络管理协议)管理软件。这个API的设计目标是提供一个易用、安全、可移植且可扩展的框架,使得开发者能够轻松地处理SNMP协议的各种操作。本文档详细介绍了...
SNMP++中文说明资料提供了对SNMP++库的详尽介绍,这是一套高级的、面向对象的网络管理软件开发工具包,专为简化SNMP(简单网络管理协议)应用程序的编写而设计。SNMP是一种广泛使用的网络管理协议,允许系统管理员...
**VC++ SNMP网络开发包snmp++ v3.2.21a详解** SNMP(简单网络管理协议)是一种广泛应用于网络设备管理的标准协议,它允许管理员远程监控和配置网络设备。Visual C++ SNMP网络开发包snmp++ v3.2.21a是为Windows环境...
### SNMP++ 编程指导 ...通过以上的介绍可以看出,SNMP++不仅提供了一个功能全面、易于使用的SNMP开发框架,而且还考虑到了跨平台的兼容性和代码的可扩展性,非常适合于开发各种复杂的网络管理系统。
Agent++是一个开源的SNMP代理开发工具,它为创建自定义的SNMP代理提供了便利。在这个“用agent++写的snmp代理程序”中,我们将探讨SNMP的基本概念、Agent++的作用以及如何利用Agent++实现GET、SET请求和TRAP发送功能...
在"snmp.zip"压缩包中的源代码,可能是演示如何使用C++和SNMP++库进行SNMP操作的例子,包括如何发起GET、GETNEXT和SET请求,以及如何处理响应。如果你对SNMP和C++编程感兴趣,这个资源会是一个很好的学习起点。
在IT领域,SNMP(简单网络管理协议)是一种广泛用于网络设备管理的标准协议,它允许系统管理员远程监控和管理网络中的设备。C++是编程语言中的一种,它提供了丰富的功能来实现各种网络通信协议,包括SNMP。在这个...
面向对象的SNMP++是一套专注于网络管理的开放技术,是SNMP协议原理和C++(结合的产物)。该文档描述了各种各样可移植的C++类(Class),正是这些C++类构建了SNMP++。(同时包含的)还有这些类的相关的许多例子。 ...
这是一个snmp agent开发包,完全支持snmpv1和snmpv2c(目前暂时不支持Counter64)的 各种操作包括get,getnext,getbulk,set和v1,v2两种Trap。用户编写程序时不需考虑协议 细节,程序框架由mib编译器自动生成,使用...
在VC++环境中开发SNMP Trap应用,你需要了解以下几个关键知识点: 1. **SNMP库**:使用VC++编程时,你需要引入一个支持SNMP的库,如libsnmp或者SNMP++库。这些库提供了接口,使得开发者可以方便地创建Trap报文并...
它提供了一个全面的API,使得开发人员能够创建SNMP代理、管理站应用程序以及进行SNMP协议的PDU(Protocol Data Unit)操作。 安装SNMP4j:首先,你需要在项目中添加SNMP4j的依赖。如果使用Maven,可以在pom.xml文件...