`
sfeve
  • 浏览: 43508 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

snmp++开发包小例子

    博客分类:
  • C++
阅读更多

在一篇论文上看到了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++是一种面向对象的开发包,用于简化简单网络管理协议(SNMP)的网络管理功能。它将SNMP协议原理与C++语言相结合,提供了一系列可移植的C++类库,从而构建了SNMP++框架。这些类库包含了对SNMPv1和SNMPv2版本的...

    snmp++ agnt++ 例子

    SNMP++是由HP公司开发的一套C++类库,旨在将SNMP编程的相关部分面向对象化,极大地简化了网络管理软件的开发过程。它提供了丰富的类和成员函数,使得开发者可以更高效地创建、管理和监控网络设备。 ##### 2.2 类与...

    snmp++3.4.6动态库(mingw编译,包含头文件).zip

    SNMP++ 3.4.6 动态库是一个用于开发网络管理应用程序的C++库,它是基于标准的SNMP(简单网络管理协议)构建的。这个库特别针对mingw编译环境进行了优化,适用于使用Qt开发平台的开发者。本文将深入探讨SNMP++、...

    snmp++中文文档

    SNMP++中文文档是一份专为HP SNMP++开发包编写的详细指南,它为使用C++进行简单网络管理协议(SNMP)编程提供了API接口。SNMP++是基于面向对象设计的,将SNMP协议的复杂性与C++的强大功能相结合,为网络管理提供了...

    SNMP++中文文档

    文档中可能包含了一个简单的SNMP++使用示例,并对这个例子进行了详细的分析,以帮助开发者理解如何在实际项目中应用SNMP++。 3.SNMP++特性: 3.1.完整的一套SNMPC++类: SNMP++提供了一整套类来处理SNMP协议中的各种...

    SNMP++.doc

    SNMP++是一个由HP公司开发的C++库,专门用于构建SNMP(简单网络管理协议)管理软件。这个API的设计目标是提供一个易用、安全、可移植且可扩展的框架,使得开发者能够轻松地处理SNMP协议的各种操作。本文档详细介绍了...

    SNMP++中文说明资料_SNMP_snmp++_

    SNMP++中文说明资料提供了对SNMP++库的详尽介绍,这是一套高级的、面向对象的网络管理软件开发工具包,专为简化SNMP(简单网络管理协议)应用程序的编写而设计。SNMP是一种广泛使用的网络管理协议,允许系统管理员...

    VC++ SNMP网络开发包snmp++ v3.2.21a

    **VC++ SNMP网络开发包snmp++ v3.2.21a详解** SNMP(简单网络管理协议)是一种广泛应用于网络设备管理的标准协议,它允许管理员远程监控和配置网络设备。Visual C++ SNMP网络开发包snmp++ v3.2.21a是为Windows环境...

    SNMP++ 编程指导

    ### SNMP++ 编程指导 ...通过以上的介绍可以看出,SNMP++不仅提供了一个功能全面、易于使用的SNMP开发框架,而且还考虑到了跨平台的兼容性和代码的可扩展性,非常适合于开发各种复杂的网络管理系统。

    用agent++写的snmp代理程序

    Agent++是一个开源的SNMP代理开发工具,它为创建自定义的SNMP代理提供了便利。在这个“用agent++写的snmp代理程序”中,我们将探讨SNMP的基本概念、Agent++的作用以及如何利用Agent++实现GET、SET请求和TRAP发送功能...

    snmp.zip_SNMP_SNMP set_c++ getnext()_c++ snmp::set_snmp++

    在"snmp.zip"压缩包中的源代码,可能是演示如何使用C++和SNMP++库进行SNMP操作的例子,包括如何发起GET、GETNEXT和SET请求,以及如何处理响应。如果你对SNMP和C++编程感兴趣,这个资源会是一个很好的学习起点。

    C++ Snmp实例程序

    在IT领域,SNMP(简单网络管理协议)是一种广泛用于网络设备管理的标准协议,它允许系统管理员远程监控和管理网络中的设备。C++是编程语言中的一种,它提供了丰富的功能来实现各种网络通信协议,包括SNMP。在这个...

    Visual C++开发基于SNMP的网络管理软件(第2版)

    面向对象的SNMP++是一套专注于网络管理的开放技术,是SNMP协议原理和C++(结合的产物)。该文档描述了各种各样可移植的C++类(Class),正是这些C++类构建了SNMP++。(同时包含的)还有这些类的相关的许多例子。 ...

    snmp agent开发包

    这是一个snmp agent开发包,完全支持snmpv1和snmpv2c(目前暂时不支持Counter64)的 各种操作包括get,getnext,getbulk,set和v1,v2两种Trap。用户编写程序时不需考虑协议 细节,程序框架由mib编译器自动生成,使用...

    snmp trap例子 源码

    在VC++环境中开发SNMP Trap应用,你需要了解以下几个关键知识点: 1. **SNMP库**:使用VC++编程时,你需要引入一个支持SNMP的库,如libsnmp或者SNMP++库。这些库提供了接口,使得开发者可以方便地创建Trap报文并...

    snmp4j包来读取snmp协议数据

    它提供了一个全面的API,使得开发人员能够创建SNMP代理、管理站应用程序以及进行SNMP协议的PDU(Protocol Data Unit)操作。 安装SNMP4j:首先,你需要在项目中添加SNMP4j的依赖。如果使用Maven,可以在pom.xml文件...

Global site tag (gtag.js) - Google Analytics