作者:
ecsun
链接:
http://papa.iteye.com/blog/220536
发表时间: 2008年07月28日
声明:本文系JavaEye网站发布的原创博客文章,未经作者书面许可,严禁任何网站转载本文,否则必将追究法律责任!
PDU(协议数据单元),用来表示管理站跟代理站点进行通信的数据。包括PDU的类型、传输的数据集合、错误说明等。
除Snmpv1 Trap外,其他操作类型的PDU大致相同。
Snmp4j针对Snmp的各个版本,开发了三个有关PDU的类。PDU(针对Snmpv2c)、PDUv1(针对Snmpv1)、ScopedPDU(针对Snmpv3),但三个类除各自特别的一些参数外,都基本相同。所以Snmp4j在设计的时候,将PDU设计成另外两个的超类,使他们能够共享大部分功能。
(1)PDU
1)pdu类型(Snmpv1支持5种,get、set、getnext、trap、getresponse,Snmpv2c增加了getbulk、inform)
int getType()
void setType(int type)
2)错误(主要有6种错误,请参见RFC)
void setErrorStatus(int status)
int getErrorStatus()
String getErrorStatusText()
void setErrorIndex(int index)
int getErrorindex()
3)变量
void add(VariableBinding vb) // 对于除get、getnext、getbulk外
void addAll(VariableBinding[] vbs) // 对于除get、getnext、getbulk外的
void addOID(VariableBinding vb) // 对于get、getnext、getbulk
void addAllOID(VariableBinding[] vbs) // 对于get、getnext、getbulk
VariableBinding get(int i)
VariableBinding[] toArray()
Vector getVariableBindings()
void set(int i,VariableBinding vb)
void remove(int i)
void clear()
int size()
(2)PDUv1
PDUv1继承了PDU,除Snmp v1 trap操作外 ,其它都跟PDU相同。因为Snmp v1的Trap设计PDU不同于其他操作的PDU,它包括:对象标识符(OID)、代理ip地址(agent-addr)、时间戳(time-stamp)、通用代理类型(generic-trap)、特定代理类型(specific-trap)。所以相应的增加了对这些字段的get/set操作。具体参见API文档。
(3)ScopedPDU
SnmpV3采用了不同安全策略,它的PDU也增加了有关安全方面的几个字段:上下文名称(ContextName)、上下文引擎ID(contextEngineID)等,其它PDU字段属于USM来管理。
所以ScopedPDU在PDU的基础上增加了相应的get/set操作。参见API。
示例代码如下:(摘自API文档)
SNMPv1/v2c GETNEXT PDU
import org.snmp4j.PDU;
import org.snmp4j.smi.*;
...
PDU pdu = new PDU();
pdu.add(new VariableBinding(new OID("1.3.6.1.2.1.1.1"))); // sysDescr
pdu.add(new VariableBinding(new OID("1.3.6.1.2.1.2.1"))); // ifNumber
pdu.setType(PDU.GETNEXT);
...SNMPv3 GETBULK PDU
import org.snmp4j.ScopedPDU;
import org.snmp4j.smi.*;
...
ScopedPDU pdu = new ScopedPDU();
pdu.add(new VariableBinding(new OID("1.3.6.1.2.1.2.1"))); // ifNumber
pdu.add(new VariableBinding(new OID("1.3.6.1.2.1.2.2.1.10"))); // ifInOctets
pdu.add(new VariableBinding(new OID("1.3.6.1.2.1.2.2.1.16"))); // ifOutOctets
pdu.setType(PDU.GETBULK);
pdu.setMaxRepetitions(50);
// Get ifNumber only once
pdu.setNonRepeaters(1);
// set context non-default context (default context does not need to be set)
pdu.setContextName(new OctetString("subSystemContextA"));
// set non-default context engine ID (to use targets authoritative engine ID
// use an empty (size == 0) octet string)
pdu.setContextEngineID(OctetString.fromHexString("80:00:13:70:c0:a8:01:0d"));
...SNMPv1 TRAP PDU
import org.snmp4j.PDUv1;
...
PDUv1 pdu = new PDUv1();
pdu.setType(PDU.V1TRAP);
pdu.setGenericTrap(PDUv1.COLDSTART);
...SNMPv2c/SNMPv3 INFORM PDU
import org.snmp4j.ScopedPDU;
...
ScopedPDU pdu = new ScopedPDU();
pdu.setType(PDU.INFORM);
// sysUpTime
long sysUpTime = (System.currentTimeMillis() - startTime) / 10;
pdu.add(new VariableBinding(SnmpConstants.sysUpTime, new TimeTicks(sysUpTime)));
pdu.add(new VariableBinding(SnmpConstants.snmpTrapOID, SnmpConstants.linkDown));
// payload
pdu.add(new VariableBinding(new OID("1.3.6.1.2.1.2.2.1.1"+downIndex),
new Integer32(downIndex)));
已有 0 人发表留言,猛击->>这里<<-参与讨论
JavaEye推荐
分享到:
相关推荐
目前,发送短消息常用Text和PDU(Protocol Data Unit,协议数据单元)模式。使用Text模式收发短信代码简单,实现起来十分容易,但最大的缺点是不能收发中文短信;而PDU模式不仅支持中文短信,也能发送英文短信。PDU...
短信PDU编码,直接填入接收者号码,及短信内容可生成PDU编码 短信PDU解码,可解析接收到的编码格式为PDU的短信内容
短信PDU解析工具,直接解析PDU格式的AT命令中的短信内容
PDU 格式的, 国内的都是的 PDU 格式的。 以下分析的都是 PDU 格式数据包。 2.PDU 格式的数据包,发送的数据包和接收的数据包数据段是不一样的。相同是 一,他们都是把数据变成字符 0123456789ABCDEF ...
1. Convert ASCII to 7-bit PDU 2. Convert 7-bit, 8-bit and 16-bit PDU to ASCII 3. Decode/Parsing the hexadecimal (PDU) of SMS message 4. Encode ASCII characters to be sent as SMS ready string
好用的 PDU 工具,支持 PDU 编解码,非常方便短信 SMS 开发,特分享给大家
这种方法收发短消息又分三种模式:BLOCK 模式、TEXT 模式和PDU 模式。BLOCK 模式现在用的很少了; TEXT 模式则只能发送ASCII 码,它不能发送中文的UNICODE码——确切地讲,从技术上来说是可以用于发送中文短消息的,...
PDU短信解析、生成工具
首先将短信息格式设为PDU模式 :AT+CMGF=0 发送AT+CMGS= YYY [CR] ;其中 YYY 为TPDU的十进制长度 收到[>][SP]响应后再发送 [SCA][TPDU][ctrl-Z] [SCA]:服务中心地址, 深圳为:0891683108705505F0。 可以用AT指令先...
// PDU编码,用于编制、发送短消息 // 输入: pSrc - 源PDU参数指针 // 输出: pDst - 目标PDU串指针 // 返回: 目标PDU串长度 int gsmEncodePdu(const SM_PARAM* pSrc, char* pDst) { int nLength; // 内部用的串长度...
下载后解压,可直接在浏览器打开,可由短信内容生成PDU,而且生成的直接就是AT命令,好用好用!也可以把收到的PDU数据转换成短信文字,超级好用!~SMS PDU解码会崩溃,这个不存在这个问题。
IBM NetBAYPDU (Power Distribution Units) 是用来连接机架内部的电源线缆的,一共由3种类型的PDU,分别发挥不同作用,以下是各种PDU的介绍: 1.NetBAY Rack Power Distribution Unit 用来连接从服务器直接接出来的...
超级好用的短信编解码工具,可以解析各种类型的使用 PDU 编码的短信,也可以根据给定的信息生成 PDU 编码串,非常方便短信程序开发
初学者开发GSM模块、4G模块的时候,需要将国标字符转换成unicode码发送到模块中,才能实现中文短信的收发。该软件可以下显示转码后PDU包的格式,也可以进行PDU包的解码,很适合调试过程中的朋友。
PDU短信编解码demo,c语言
包含PDU编码、解码的一些算法
软件介绍: SMS PDU TOOLS V1.0支持中国移动和中国联通短消息,只需输入手机号码和短消息内容,即可生成相应的PDU数据包,并显示TPDU和PDU长度。非常方便短信 SMS 开发时使用。
短信发送 pdu 转换生成,源代码..............
用C语言设计PDU正常短信以及长短信的编码解码
GSM短信PDU码对照表,费尽千辛万苦才找到的好东西哦。