SNMP++中文文档Word文档下载推荐.docx
- 文档编号:20367397
- 上传时间:2023-01-22
- 格式:DOCX
- 页数:87
- 大小:66.75KB
SNMP++中文文档Word文档下载推荐.docx
《SNMP++中文文档Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《SNMP++中文文档Word文档下载推荐.docx(87页珍藏版)》请在冰豆网上搜索。
异步的非阻塞模式...11
3.9.
Notification、Trap的收发...11
3.10.
通过双效的API支持SNMPv1和SNMPv2.11
3.11.
支持SNMP的Get,GetNext,GetBulk,Set,Inform和Trap的操作...11
3.12.
通过继承实现重定义...11
4.
在MicrosoftWindows系列操作系统上使用SNMP++.12
4.1.
WinSNMPVersion1.1的使用...12
4.2.
对IP和IPX的支持...12
4.3.
对Notification、Trap收发的支持...12
4.4.
与HPOpenViewforWindows兼容...12
5.
在UNIX上使用SNMP++.13
5.1.
统一的类的接口...13
5.2.
Windows到UNIX的仿真与移植...13
5.3.
与HPOpenViewforUNIX兼容...13
6.
SNMPSyntaxClasses.14
7.
ObjectIdClass.15
7.1.
对象标识符类...15
7.2.
OidClass的成员函数列表...15
7.3.
一些OidClass的例子...16
8.
OctetStrClass.19
8.1.
八位字节类...19
8.2.
OctetStrClass的成员函数列表...19
8.3.
注意...20
8.4.
一些OctetStrClass的例子...21
9.
TimeTicksClass.22
9.1.
时间戳类...22
9.2.
TimeTicksClass的成员函数列表...22
9.3.
注意...22
9.4.
一些TimeTicksClass的例子...23
10.
Counter32Class.24
10.1.
32位计数器类...24
10.2.
Counter32Class的成员函数列表...24
10.3.
一些Counter32Class的例子...24
11.
Gauge32Class.26
11.1.
容量类...26
11.2.
Gauge32Class的成员函数列表...26
11.3.
一些Gauge32的例子...26
12.
Counter64Class.28
12.1.
64位计数器类...28
12.2.
Counter64Class的成员函数列表...28
12.3.
一些的Counter64Class例子...29
13.
AddressClass.30
13.1.
什么是网络地址类?
...30
13.2.
为什么要使用网络地址类?
13.3.
Addressclass.30
13.4.
AddressClasses及其接口...30
13.5.
IpAddressClass的特点...32
13.6.
GenAddress的特点...32
13.7.
AddressClass的有效性...32
13.8.
UdpAddresses和IpxSockAddresses.33
13.8.1.
用UdpAddresses发送请求...33
13.8.2.
用IpxSockAddresses发送请求...33
13.8.3.
用UdpAddress和IpxSockAddress接收Notification.33
13.9.
有效的地址格式...33
13.10.
AddressClass例子...34
14.
TheVariableBindingClass.36
14.1.
VariableBindingClass成员函数列表...36
14.2.
VbClass的公有成员函数...37
14.2.1.
VbClass的构造和析构函数...37
14.2.2.
VbClass的GetOid/SetOid成员函数...38
14.2.3.
VbClass的GetValue/SetValue成员函数...38
14.2.4.
用一个GenAdress对象设置value.39
14.2.5.
用一个UdpAdress对象设置value.39
14.2.6.
用一个IpxSockAdress对象设置value.40
14.2.7.
用一个Octet对象设置value部分...40
14.2.8.
VbClass成员函数:
GetValue.40
14.2.9.
Vb对象的成员函数:
GetSyntax.41
14.2.10.
检查Vb对象的有效性...42
14.2.11.
把Vb对象付给另一个Vb对象...42
14.2.12.
Vb对象的错误信息...42
14.3.
VbClass例子...42
15.
PduClass.45
15.1.
PduClass成员函数列表...45
15.2.
PduClass的构造和析构...46
15.3.
访问Pdu的成员函数...46
15.4.
PduClass重载操作符...47
15.5.
PduClass处理Traps和Informs的成员函数...47
15.6.
加载Pdu对象...48
15.7.
15.8.
卸载Pdu对象...49
16.
SnmpMessageClass.50
17.
TargetClass.51
17.1.
抽象的Target51
17.2.
Target地址...51
17.3.
重发机制...51
17.4.
TargetClass接口...51
17.5.
CTargetClass(以Community为基础的Target)52
17.5.1.
CTarget对象可通过3种不同的方式构建...53
17.5.2.
修改CTargets.53
17.5.3.
访问CTargets.53
17.5.4.
CTargets例子...54
18.
SnmpClass.55
18.1.
SnmpClass成员函数列表...55
18.2.
双效的API56
18.3.
SnmpClass的公共成员函数...57
18.3.1.
SnmpClass的构造和析构函数...57
18.3.2.
SnmpClass构造函数...57
18.3.3.
SnmpClass析构函数...57
18.3.4.
SnmpClass发送请求的成员函数...57
18.3.5.
SnmpClass的阻塞方式成员函数:
Get57
18.3.6.
GetNext57
18.3.7.
Set58
18.3.8.
GetBulk.58
18.3.9.
Inform..58
18.4.
SnmpClass的异步方式成员函数...58
18.4.1.
SNMP++异步回调函数的类型定义...58
18.4.2.
取消一个异步请求...59
18.4.3.
SnmpClass的异步成员函数:
Get59
18.4.4.
Set60
18.4.5.
GetNext60
18.4.6.
GetBulk.60
18.4.7.
Inform..60
18.5.
SNMP++通知的方法...60
18.5.1.
发送Trap.61
18.5.2.
接收Notification.62
18.5.3.
使用OidCollection,TargetCollection和AddressCollections过滤...63
18.6.
SNMP++Class返回的错误号...64
18.6.1.
SnmpClass的错误消息成员函数...64
19.
运行模式...65
19.1.
MicrosoftWindows事件驱动系统的运作...65
19.2.
OpenSystemsFoundation(OSF)X11Motif的运作...65
19.3.
不以GUI为基础的应用的运作...65
20.
状态&错误编号...67
21.
错误状态值...68
22.
SnmpClass例子...69
22.1.
GettingaSingleMIBVariableExample.69
22.2.
GettingMultipleMIBVariablesExample.69
22.3.
SettingaSingleMIBVariableExample.71
22.4.
SettingMultipleMIBVariablesExample.71
22.5.
WalkingaMIBusingGet-NextExample.72
22.6.
SendingaTrapExample.73
22.7.
ReceivingTrapsExample.73
23.
参考书目...75
SNMP++框架的对象模型(ObjectModelingTechnique)视图
介绍
目前有许多可以创建网络管理应用的SNMP的API。
大多数API都提供了一个很大的函数库,调用这些函数的程序员需要熟悉SNMP内部的工作原理和它的资源管理机制。
这些API大多都是平台相关的,导致了SNMP的代码也成了操作系统相关的或者网络系统平台有关的,难以移植。
另一方面由于C++有丰富的、可复用的标准类库,用C++开发应用成了目前的主流,然而C++标准类库所缺少的正是一套封装好的处理网络管理的类。
如果基于面向对象的方法来进行SNMP网络编程,可以提供以下诸多好处:
易用、安全、可移植、能扩展。
因此SNMP++灵活有效的解决了其他类似API执行和管理起来都很痛苦的问题。
什么是SNMP++
SNMP++是一套C++类的集合,它为网络管理应用的开发者提供了SNMP服务。
SNMP++并非是现有的SNMP引擎的扩充或者封装。
事实上为了效率和方便移植,它只用到了现有的SNMP库里面极少的一部分。
SNMP++也不是要取代其他已有的SNMPAPI,比如WinSNMP。
SNMP++只是通过提供强大灵活的功能,降低管理和执行的复杂性,把面向对象的优点带到了网络编程中。
SNMP++的本质
简单易用的SNMP++
面向对象的SNMP编程应该是简单易用的。
毕竟,SNMP原意就是“简单网络管理协议”,SNMP++只是将简单还给SNMP!
应用的开发者不需要关心SNMP的底层实现机制,因为面向对象的方法已经将SNMP内部机制封装、并隐藏好了。
SNMP++的简单易用表现在以下方面:
1.2.1.1.
为SNMP提供了简单易用的接口
使用SNMP++不需要精通SNMP,甚至不需要精通C++!
因为SNMP++里面几乎没有C的指针,所以可以简单的通过API直接使用。
1.2.1.2.
可以方便的迁移至SNMPv2
SNMP++的主要目标之一就是开发一套API,使得迁移至SNMPv2的过程中尽可能少地影响现有代码。
SnmpTargetclass使之成为了可能。
1.2.1.3.
保留了对SNMP灵活的底层开发
这是为了方便那些不希望使用面向对象方法,而直接编写SNMP的底层机制的用户。
虽然SNMP++快速而方便,但是有些时候程序员也许希望直接使用底层的SNMPAPI。
1.2.1.4.
鼓励程序员用功能强大的C++,不要因学得不够快而去指责它
使用SNMP++的用户不需要精通C++。
基本的SNMP的知识是必要的,但是实际上也需要对C++初步的理解。
编程安全的SNMP++
大多数SNMPAPI需要程序员去管理大量的资源。
不恰当的装载或卸载这些资源,会导致内存崩溃或泄漏。
SNMP++提供的安全机制,可以实现对这些资源的自动管理。
SNMP++的用户可以体验到自动管理资源与对话所带来的好处。
SNMP++在编程上的安全突出表现在下面的领域:
1.2.2.1.
为SNMP资源提供安全的管理
这包括对SNMP的结构、会话以及传输层的管理。
SNMPclass被设计成所谓的抽象数据类型(ADT),隐藏了私有数据,而通过提供公有的成员函数来访问或修改这些隐藏了的实例变量。
1.2.2.2.
提供查错、自动超时重发的机制
SNMP++的用户不需要关心如何为不可靠的网络传输机制提供可靠性。
可能出现的通信错误包括:
数据包丢失、数据包重复以及反复提取数据包。
SNMP++消除了所有这些问题出现的可能性,为用户提供了传输层的可靠性。
可移植的SNMP++
SNMP++的主要目的之一就是提供一套可移植的API,进而穿越各种操作系统(Os)、网络系统(NOS)以及网络管理平台。
由于SNMP++隐藏了内部机制,所以从各个平台的角度来看SNMP++的公用接口都是一样的。
使用SNMP++的程序员不需要为平台迁移去修改代码。
另一个移植方面的问题是在多种协议上运行的能力。
目前,SNMP++能运行在IP协议和IPX协议上,或者两者都可以。
可扩充的SNMP++
扩充不应该只是多一种选择,而是更深层次的。
SNMP++不仅是可扩充,而且是很容易扩充。
SNMP++的扩充囊括了对下列领域的支持:
新的操作系统、网络系统、网络管理平台、网络协议、SNMPv2及其新特性。
通过派生C++的类,SNMP++的用户可以根据自己的喜好继承、重载。
1.2.4.1.
重载SNMP++的基础类
应用的开发者可以通过派生出SNNP++的子类来提供所需的操作和属性,这正是面向对象的核心主题。
SNMP++的基础类被打造成通用的、没有包含任何具体的数据结构和操作。
通过C++派生类以及重新定义虚函数,可以很容易的添加新属性。
一个介绍性的例子
在开始介绍SNMP++的各种特性之前,这里先举个简单的例子来展现它的强大和简单。
该例子是从指定的代理端上获取SNMPMIB的系统描述符(SystemDescriptorobject)。
包含了创建一个SNMP++会话、获取系统描述符,并打印显示出来的所需的所有代码。
其中重发和超时机制已经被SNMP++自动管理了。
以下属于SNMP++的代码,采用粗体显示。
一个简单的SNMP++例子
#include“snmp_pp.h”
#defineSYSDESCR“1.3.6.1.2.1.1.1.0”
//ObjectIDforSystemDescriptor
voidget_system_descriptor()
{
intstatus;
//returnstatus
CTargetctarget((IpAddress)“10.4.8.5”);
//SNMP++communitytarget
Vbvb(SYSDESCR);
//SNMP++VariableBindingObject
Pdupdu;
//SNMP++PDU
//-------[ConstructaSNMP++SNMPObject]---------------------------------------
Snmpsnmp(status);
//CreateaSNMP++session
if(status!
=SNMP_CLASS_SUCCESS){
//checkcreationstatus
cout<
<
snmp.error_msg(status);
//
iffail,printerrorstring
return;
}
//-------[InvokeaSNMP++Get]-------------------------------------------------------
pdu+=vb;
//
addthevariablebindingtothePDU
if(
(status=snmp.get(
pdu,ctarget))!
=SNMP_CLASS_SUCCESS)
else{
pdu.get_vb(vb,0);
//extractthevariablebindingfromPDU
“SystemDescriptor=”<
vb.get_printable_value();
}
//printoutthevalue
};
//Thatsall!
对介绍性例子的分析
真正属于SNMP++的语句就10行代码。
首先用代理端的IP地址建立一个CTarget对象;
然后用MIB对象所定位的系统描述符创建一个变量绑定(Vb);
接着就把这个Vb纳入一个Pdu对象;
最后生成一个Snmp对象来执行SNMP的get操作。
一旦找到了所需的数据,对应的应答消息就被打印出来。
另外,所有的处理错误代码也都包含在内了。
SNMP++特性
C++类
SNMP++是以一套C++类作为基石的。
这些类是:
对象描述符(Oid)类、变量绑定(Vb)类、协议数据单元(Pdu)类、Snmp类。
并且,其他各种用抽象语法表示(ASN.1)来描述的管理信息结构(SMI),也被抽象成了简单的、面向对象的类型。
SNMP内存的自动管理
当SNMP++的对象被实例化或销毁的时候,其相关的类可以自动管理着各种各样的SNMP结构和资源。
这就使得应用的开发者不用再担心数据结构和资源的卸载,不然就得为防止内存的崩溃或者泄漏提供有效的保护措施。
SNMP++的对象的实例化可以是静态的,也可以是动态的。
静态的实例化可以在对象脱离它的作用域时卸载掉;
动态分配则需要使用C++的new和delete。
在SNMP++内部,有许多被隐藏和保护在公用接口后面的SMI结构。
所有的SMI结构都是在内部管理的,程序员不需要定义或管理SMI的结构和它的值。
因为在SNMP++内绝大部分地方是不存在C的指针的。
简单易用的
由于隐藏并管理了所有SMI结构和它们的值,SNMP++的类使用起来即简单又安全。
外部程序员无法破坏到隐藏和保护在作用域后面的东东。
强大灵活的
SNMP++提供了强大灵活的功能,降低了管理和执行的复杂性。
每个SNMP++对象都通过建立一个会话来和一个代理端联系。
即由一个SNMP++的对话类的实例,就能处理所有与特定代理端的连接。
另外自动重发和超时控制的机制,为每个SNMP++对象都带来了可靠性。
一个应用可能会包含许多SN
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SNMP 中文 文档