轻松学习C#开发CMPP2.0协议网关-4
来源:互联网 发布:我的淘宝网购物车 编辑:程序博客网 时间:2024/04/27 18:09
大家通过上面3讲应当已经对协议包的封装、解析有了了解。
2、登录应答协议包
3、短信发送协议包
4、短信发送应答协议包
5、上行消息/状态报告协议包
6、上行消息/状态报告应答协议包
7、心跳连接协议包
8、心跳连接应答协议包
剩下这些协议包的封装与解析都类似与登录。
这里要重点讲解的是长短信的封装;
长短信实现
长短信最主要就是在短信内容前加了一个协议头。同时将submit的参数TP_udhi设为1,将短信格式设为8,提交时,先将短信内容转为ucs2编码,再加上头协议,合成一个byte[]类型,直接提交即可。
协议头的长度为6
byte[] tp_udhiHead = new byte[6];
tp_udhiHead[0] = 0x05;//最大支持5条
tp_udhiHead[1] = 0x00;
tp_udhiHead[2] = 0x03;
tp_udhiHead[3] = 0x01;
tp_udhiHead[4] = (byte)num;//长短信拆分后的条数
tp_udhiHead[5] = 0x01;//当前条数
短信消息的总长度为140字节,协议头占用了6字节,剩下的短信内容占用134字节,在拆分短信时按照134字节一条进行拆分。
byte[] _msgContent = Tools.StringToByte(info.Smscontent, "UCS2"); //获取长度 int messageUCS2Len = _msgContent.Length; //短信最大长度 int maxMessageLen = 140; //长短信 int messageUCS2Count = messageUCS2Len % 134 == 0 ? messageUCS2Len / 134 : messageUCS2Len / 134 + 1; //长短信分为多少条发送 byte[] tp_udhiHead = new byte[6]; tp_udhiHead[0] = 0x05; ; tp_udhiHead[1] = 0x00; ; tp_udhiHead[2] = 0x03; ; tp_udhiHead[3] = 0x01; ; tp_udhiHead[4] = (byte)messageUCS2Count; ; tp_udhiHead[5] = 0x01; ; //默认为第一条 for (int j = 0; j < messageUCS2Count; j++) { tp_udhiHead[5] = (byte)(j + 1); if (j != messageUCS2Count - 1) { byte[] msgContent = new byte[134]; //不为最后一条 byte[] ocon = new byte[140]; tp_udhiHead.CopyTo(ocon, 0); //取出第一条短信 Array.Copy(_msgContent, j * 134, msgContent, 0, 134); msgContent.CopyTo(ocon, 6); //发送 ocon } else { byte[] msgContent1 = new byte[messageUCS2Len - j * 134]; byte[] ocon = new byte[messageUCS2Len - j * 134 + 6]; tp_udhiHead.CopyTo(ocon, 0); //取出最后一条短信 Array.Copy(_msgContent, j * 134, msgContent1, 0, messageUCS2Len - j * 134); msgContent1.CopyTo(ocon, 6); //提交短信,自行添加代码,提交短信 //发送 ocon } }
- 轻松学习C#开发CMPP2.0协议网关-4
- 轻松学习C#开发CMPP2.0协议网关-1
- 轻松学习C#开发CMPP2.0协议网关-2
- 轻松学习C#开发CMPP2.0协议网关-3
- 协议开发 中移动CMPP2.0协议API(三)
- 协议开发 中移动CMPP2.0协议API(四)
- 协议开发 中移动CMPP2.0协议API(一)
- 协议开发 中移动CMPP2.0协议API(二)
- 协议开发 中移动CMPP2.0协议API(三)
- 协议开发 中移动CMPP2.0协议API(四)
- CMPP2.0 协议SP端的·NET开发
- CMPP2.0 协议SP端的·NET开发
- CMPP2.0 协议SP端的·NET开发
- CMPP2.0 协议SP端的·NET开发
- CMPP2.0 协议SP端的·NET开发(转)
- CMPP2.0 协议SP端的·NET开发
- CMPP2.0 协议SP端的·NET开发
- CMPP2.0 协议SP端的·NET开发
- 收集一下开源协议声明
- 内存分配和释放
- vim用法
- Spring注解@Componen、@Repository@Service、@Controller区别
- s3c6410 开发板Linux系统支持 K9GAG08U0E的方法(第二篇)
- 轻松学习C#开发CMPP2.0协议网关-4
- struts 转化json时候出现出现无法转化
- 参数传递方向
- Windows 8三个火枪手:Win8,Win8 Pro和Win RT
- 远程桌面连接 共享文件
- C/C++常用头文件及函数汇总
- CSS积累
- problem with makefsfile
- 如何用vc(atl)编写安全的控件