加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

SNMP++的深入学习(三)

发布时间:2020-12-16 23:04:35 所属栏目:大数据 来源:网络整理
导读:三、初显端倪的Snmp类 Snmp类封装了一次SNMP通信活动建立的UDP连接,在所有的类中,只有该类使用网络资源和代理进行了通信连接。Snmp类做了通信活动中大部分的工作,程序员所做的工作只需要声明一个该类的对象,并设置对应的参数即可。 源代码如下: #includ

三、初显端倪的Snmp类
Snmp类封装了一次SNMP通信活动建立的UDP连接,在所有的类中,只有该类使用网络资源和代理进行了通信连接。Snmp类做了通信活动中大部分的工作,程序员所做的工作只需要声明一个该类的对象,并设置对应的参数即可。
源代码如下:
#include "snmp_pp.h"
#include
#define SYSDESCR "1.3.6.1.2.1.1.1.0"// Object ID for System Descriptor
void main()
{Snmp::socket_startup(); //socket_startup()静态成员函数,初始化Winsocket的相关函数
int status;// return status
CTarget ctarget( (IpAddress) "192.168.3.1");// SNMP++ v1 target
//使用一个Address对象构造一个Ctarget对象
Vb vb( SYSDESCR);// SNMP++ Variable Binding
Pdu pdu;// SNMP++ PDU

//-------[ Construct a SNMP++ SNMP Object ]---------------------------------------
Snmp snmp( status);// Create a SNMP++ session 创建一个新的snmp对象,
//第一个参数表示创建状态,0表示成功
if ( status != SNMP_CLASS_SUCCESS) {// check creation status
cout << snmp.error_msg( status);// if fail,print error string
return; }

//-------[ Invoke a SNMP++ Get ]-------------------------------------------------------
//invoke的意思是requests help or protection(from a deity)
pdu += vb;// add the variable binding
if ( (status = snmp.get( pdu,ctarget)) != SNMP_CLASS_SUCCESS)
cout << snmp.error_msg( status);
else {
pdu.get_vb( vb,0);// extract the variable binding
cout << "System Descriptor = "<< vb.get_printable_value(); }// print out
Snmp::socket_cleanup(); //socket_cleanup()静态成员函数,释放被上面函数初始化的winsocket的资源
}
程序运行结果如图8所示:

图8说实话,这个结果出来的时候让我很是激动了一番,因为出现这个结果,表明我们已经可以使用一种编程语言得到一台支持SNMP管理的相关信息了。当然以后的路还很长,随着学习的深入,我会把进一步的学习心得汇报给大家。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读