博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
短信中VB.NET编码PDU(一)
阅读量:5146 次
发布时间:2019-06-13

本文共 887 字,大约阅读时间需要 2 分钟。

PDU的编码器的工作原理是解码器的逆过程。根据需要编码器只需要编码发送的PDU代码,工作相对简单。本文讲解编码思路,具体代码请参考Blog中PDUEncoder部分

我把PDU的编码分为两部分,SMS和EMS。EMS部分我只提供了ConcatenatedShortMessage的编码器。这是超长短信的编码,用得最多。

SMS编码

编码一个SMS一般需要如下的信息:

TP_Data_Coding_Scheme TP_UD编码方式

TP_Destination_Address 对方号码

TP_Message_Reference 参考号码

TP_Status_Report_Request 状态报告

TP_User_Data 用户信息

TP_Validity_Priod 有效期

ServiceCenterNumber 短信中心号码

所以在编码器中存在以上的属性,并在Set中加入了处理代码,将可读信息转换成对应的十六进制信息。

特别注意的是TP_User_Data属性,它可以根据用户数据编码自动设置TP_UDL。对于纯英文编码,TP_UDL为所有的字符数;对于Unicode编码,由于一个字符由两个字节表示,TP_UDL为所有的字符数*2。注意检查TP_User_Data的长度,对于SMS来说编码后的TP_UD长度不能超过140字节。也就是说英文160个字符(140/7*8),中文70个字符。

对于TP_UD的编码在解码器中也有说明,在此不再赘述。

我还设计了几个枚举变量:

ENUM_TP_DCS 编码方式

ENUM_TP_SRI 状态报告

ENUM_TP_VALID_PERIOD 有效期

ENUM_TP_VPF 有效期格式

这些枚举变量可以简化输入,也利于日后扩充。

当以上内容设置好以后,基本上一个短信的架子就出来了。此时调用GetSMSPDUCode进行组合,简单的把十六进制拼接起来就形成了一个完整的PDU代码。

转自bbs.sendsms.cn

转载于:https://www.cnblogs.com/xiaoxiaodi/p/4923879.html

你可能感兴趣的文章
类的加载和连接过程
查看>>
[我研究]9月第二周
查看>>
45个纯 CSS 实现的精美边框效果【附演示和源码】【上篇】
查看>>
android exception requestfeature must be called before adding content
查看>>
第二章 Vue快速入门-- 26 过滤器-定义私有过滤器
查看>>
Set集合HashSet,TreeSet
查看>>
Docker三要素
查看>>
机器学习:线性模型
查看>>
eclipse web工程不能 修改build path
查看>>
Visual Studio 2015 终于还是装上了
查看>>
libusb(.NET)开源项目使用小结
查看>>
1、Java调用C语言(本地法)
查看>>
windows下 gvim 配置
查看>>
no route to host解决方案、Failed to start LSB: Bring up/down networking的问题解决方案
查看>>
tensor内部结构
查看>>
CJCMS系列---说说项目中的插件思想(1)
查看>>
批量打开连接
查看>>
解决IE6、IE8 自适应高度
查看>>
去哪网实习总结:递归构建“流程运行顺序”的XML文件(JavaWeb)
查看>>
机器学习笔记十三:Ensemble思想(上)
查看>>