SNMP_PP_CHS Charpter 8 - 9
来源:互联网 发布:linux设置系统时间 编辑:程序博客网 时间:2024/05/22 04:45
1. OctetStr Class
SNMP++之OctetStr Class的对象模型(Object Modeling Technique)视图
1.1. 八位字节类
(通过)SNMP++的Octet class,可以简单且安全地操作SMI的8位字节。有了Octet class,就不需要通过内部指针和长度来操作8位字节了。使用SNMP++的Octet class来实例化、操作、销毁一个8位字节对象是很简单的,不用担心如何管理内存以及内存是否会泄漏。与ANSI C++的string class类似,OctetStr class可以通过多种方法构造8位字节,还可以对它们进行赋值操作,与其他SNMP++ classes一起使用。
1.2. OctetStr Class的成员函数列表
OctetStr Class Member Functions
Description
Constructors
OctetStr::OctetStr( void);
构造一个空的OctetStr
OctetStr::OctetStr( const char* string);
用一个没有结束符的字符串构造OctetStr
OctetStr::OctetStr( const unsigned char *s, unsigned long int i);
通过一个指针和长度来构造OctetStr
OctetStr::OctetStr( const OctetStr &octet);
用已有的OctetStr构造新的OctetStr
Destructor
OctetStr::~OctetStr( );
销毁一个OctetStr
Overloaded Operators
OctetStr& operator = ( const char *string);
将一个没有结束符的字符串付给一个OctetStr
OctetStr& operator = ( const OctetStr& octet);
将一个OctetStr付给另一个OctetStr
int operator == ( const OctetStr &lhs, const OctetStr &rhs);
判断两个OctetStr对象是否相等
int operator == ( const OctetStr & lhs, const char *string);
判断OctetStr是否和一个char*字符串相等
int operator != ( const OctetStr& lhs, const OctetStr& rhs);
判断两个OctetStr对象是否不相等
int operator != ( const OctetStr& lhs, const char *string);
判断OctetStr是否和一个char*字符串不相等
int operator < ( const OctetStr&lhs, const OctetStr& rhs);
判断一个OctetStr是否比另一个小
int operator < ( const OctetStr &lhs, const char * string);
判断一个OctetStr是否比另一个char *字符串小
int operator <= ( const OctetStr &lhs, const OctetStr &rhs);
判断一个OctetStr是否“小于等于”另一个
int operator <= ( const OctetStr &lhs, const char * string);
判断一个OctetStr是否“小于等于”一个char *的字符串
int operator > ( const OctetStr& lhs, const OctetStr &rhs);
判断一个OctetStr是否比另一个大
int operator > ( const OctetStr& lhs, const char * string);
Test if one OctetStr is greater than a char *.
判断一个OctetStr是否比一个char *的字符串大
int operator >= ( const OctetStr& lhs, const OctetStr &rhs);
判断一个OctetStr是否“大于等于”另一个
int operator >= ( const OctetStr& lhs, const char *);
判断一个OctetStr是否“大于等于”一个char*的字符串
OctetStr& operator +=( const char * string);
在一个OctetStr后面连接一个字符串
OctetStr& operator +=( const unsigned char c);
在一个OctetStr后面连接一个单字符
OctetStr& operator+=( const OctetStr &octetstr);
将两个OctetStr连接在一起
unsigned char& operator[ ] ( int position i);
用数组的形式来访问一个OctetStr
Miscellaneous
void set_data( const unsigned char *s, unsigned long l);
用指针和长度来设置一个OctetStr
int nCompare( const unsigned long n, const OctetStr &o);
与另一个OctetStr比较前n个元素
unsigned long len();
返回一个OctetStr的长度
int valid();
返回一个OctetStr的有效性
unsigned char * data();
返回一个指向内部数据的指针
char * get_printable();
格式化输出,如果不是ASCII则按16进制处理
char * get_printable_hex();
按16进制格式,进行格式化输出
1.3. 注意
当输出一个OctetStr对象时,如果该8位字节所包含的字符不是ASCII码,对成员函数char *或者get_printable()的调用,就会自动转换成对成员函数get_printable_hex()的调用。这就使得使用者只需要简单地使用成员函数char *或get_printable()来进行输出。而成员函数get_printable_hex()是专门用来把OctetStr按16进制格式输出的。
1.4. 一些OctetStr Class的例子
// Octet Class Examples
#include “octet.h”
void octet_example()
{
OctetStr octet1; // create an invalid un- initialized octet object
OctetStr octet2( “Red Hook Extra Bitter Ale”); // create an octet with a string
OctetStr octet3( octet2); // create an octet with another octet
unsigned char raw_data[50]; // create some raw data
OctetStr octet4( raw_data, 50); // create an OctetStr using unsigned char data
octet1 = “
cout << octet1.get_printable(); // show octet1 as a null terminated string
cout << octet4.get_printable_hex(); // show octet4 as a hex string
cout << (char *) octet1; // same as get_printable()
if ( octet1 == octet2) // compare two octets
cout << “octet1 is equal to octet
octet2 += “WinterFest Ale”; // concat a string to an Octet
if ( octet2 >= octet3)
cout << “octet2 greater than or equal to octet
octet2[4] = ‘b’; // modify an element of an OctetStr using [ ]’s
cout << octet.len(); // print out the length of an OctetStr
unsigned char raw_data[100];
octet1.set_data( raw_data, 100); // set the data of an to unsigned char data
// get the validity of an OctetStr
cout << (octet1.valid() )? “Octet1 is valid” : “Octet1 is Invalid”;
}; // end octet example
2. TimeTicks Class
SNMP++之TimeTicks Class的对象模型(Object Modeling Technique)视图
2.1. 时间戳类
SNMP++的TimeTicks Class为(使用)SMI中的timeticks带来了方便。SMI的时间戳被定义成了一种存放无符号长整形的存储单元。为了成为无符号长整形,SMI timeticks被加工成了一种特殊的类型。因此SNMP++的TimeTicks类具有无符号长整形的所有功能和属性,但同时又是一个独立的类。对无符号长整形的任何操作,拿到TimeTicks的对象上一样有效。TimeTicks class与其他SNMP++的类,比如Vb class(译注:后面将会讲到)交互的时候,还可以有些额外的操作:在使用Vb class的时候,TimeTicks的对象可以被置入Vb对象(用Vb::set),也从Vb对象中取出(用Vb::get)。也即,对于SMI timeticks,开发者可以像对无符号长整形一样来操作,并且还提供了一对一的映射关系。
2.2. TimeTicks Class的成员函数列表
TimeTicks Class Member Functions
Description
Constructors
TimeTicks::TimeTicks( void);
构造一个空的TimeTicks对象
TimeTicks::TimeTicks( const unsigned long i );
用一个无符号长整形来构造一个TimeTicks对象
TimeTicks:;TimeTicks( const TimeTicks &t);
用一个已有的TimeTicks对象来构造一个新的
Destructor
TimeTicks::~TimeTicks( );
销毁一个TimeTicks对象
Overloaded Operators
TimeTicks& operator =( const TimeTicks &t);
重载赋值操作符
char * get_printable();
格式化输出,格式为:DD Days, HH:MM:SS.hh
operator unsigned long();
把TimeTicks转换为无符号长整形
2.3. 注意
TimeTicks对象用TimeTicks::get_printable()输出时,其值自动被格式化为“DD days, HH:MM:SS.hh”。其中DD代表天,HH代表小时(24时制的),MM代表分钟,SS是秒钟,hh则是百分之几秒。
2.4. 一些TimeTicks Class的例子
// TimeTicks Examples
#include “timetick.h”
void timeticks_example()
{
TimeTicks tt; // create an un-initialized timeticks instance
TimeTicks tt1( (unsigned long) 57); // create a timeticks using a number
TimeTicks tt2( tt1); // create a timeticks using another instance
tt = 192; // overloaded assignment to a number
tt2 = tt; // overloaded assignment to another timeticks
cout << tt.get_printable(); // print out in DD days, HH:MM:SS.hh
cout << ( unsigned long) tt; // print out unsigned long int value
}; // end timeticks example
- SNMP_PP_CHS Charpter 8 - 9
- SNMP_PP_CHS Charpter 1 - 2
- SNMP_PP_CHS Charpter 3 - 5
- SNMP_PP_CHS Charpter 6 - 7
- SNMP_PP_CHS Charpter 10 - 12
- SNMP_PP_CHS Charpter 13
- SNMP_PP_CHS Charpter 14
- SNMP_PP_CHS Charpter 15
- SNMP_PP_CHS Charpter 16 - 17
- SNMP_PP_CHS Charpter 18
- SNMP_PP_CHS Charpter 19 - 21
- Charpter 9
- Charpter 9 of HypertextTransferProtocol--HTTP/1.1
- Charpter 10
- Charpter 12
- Charpter 4&5 ARP&RARP
- Charpter six Applications of internet
- SNMP_PP_CHS —— 中文版“snmp_pp.doc”序
- 数组翻转
- 装了一下MINIX 3
- AjAX简介
- 常见的视频文件格式
- grep的学习ing
- SNMP_PP_CHS Charpter 8 - 9
- javascript,ASP,HTML页面跳转全攻略
- 编辑注册表函数
- Input Data Source中的role
- Ajax Patterns 读书笔记 --1
- 背板带宽
- 模拟烟花
- 采用设计模式理由
- 如何测试坏点