共享一段CMPP编程时候,移动网关返回CMPP_SUBMIT_RESP消息中,解析Msg_Id字段的代码
来源:互联网 发布:cad网络插座符号 编辑:程序博客网 时间:2024/05/22 15:51
最近刚完成CMPP3.0发送手机短信的开发工作,感觉不错。
发送短信方法:是向移动网关发送CMPP_SUBMIT消息,如果CMPP_SUBMIT消息中标识要移动网关发送确认是否成功的CMPP_SUBMIT_RESP消息。CMPP_SUBMIT_RESP结构(CMPP3.0的):
字段名
字节数属性
描述
Msg_Id8Unsigned Integer 信息标识,生成算法如下:
采用64 位(8 字节)的整数:
(1)时间(格式为MMDDHHMMSS,即
月日时分秒):bit64~bit39,其中
bit64~bit61:月份的二进制表示;
bit60~bit56:日的二进制表示;
bit55~bit51:小时的二进制表示;
bit50~bit45:分的二进制表示;
bit44~bit39:秒的二进制表示;
(2)短信网关代码:bit38~bit17,把短信
网关的代码转换为整数填写到该字
段中;(3)序列号:bit16~bit1,顺序增加,步
长为1,循环使用。
各部分如不能填满,左补零,右对齐。
(SP 根据请求和应答消息的Sequence_Id
一致性就可得到CMPP_Submit 消息的
Msg_Id)Result
4 Unsigned
Integer
结果:
0:正确;
....
下面给出自己写的解析Msg_Id的简单代码:
public class ToByteTest {
public static void main(String[] args){
long temp = -4025053409177436045L;
byte[] bt = new byte[8];
for(int i=0;i<8;i++){
bt[i] = (byte) (temp >> (56 - i * 8));
}
int mask = 0xf0;
int month = (bt[0] & mask)>>4;
System.out.println("Month:"+month);
mask=0xF;
int date = (bt[0] & mask)<<1;
mask=0x80;
int date2 = bt[1]>>7;
date = (date&(date2|0x1E));
System.out.println("Date:"+date);
//01111100
mask=0x7C;
int hour = (bt[1]&mask)>>2;
System.out.println("Hour:"+hour);
mask=0x3;
int minute = (bt[1]&mask)<<4;
minute |= (bt[2]&0xF0)>>4;
System.out.println("Minute:"+minute);
mask=0xf;
int second = (bt[2]&mask)<<2;
second |= (bt[3]&0xff)>>6;
System.out.println("Second:"+second);
mask = 0x3F;
int Msg_Id = (bt[3]&mask)<<16;
Msg_Id |= (bt[4]&0xFF)<<8;
Msg_Id |= (bt[5]&0xFF);
System.out.println("Msg_Id:"+Msg_Id);
mask = 0xFF;
int seq_id = (bt[6]&mask)<<8;
seq_id |= (bt[7]&mask);
System.out.println("seq_id:"+seq_id);
}
}
执行结果如下:
Month:12(月份)
Date:16(日期)
Hour:9(小时)
Minute:2(分钟)
Second:13(秒)
Msg_Id:1(短信网关代码)
seq_id:115(序列号)
- 共享一段CMPP编程时候,移动网关返回CMPP_SUBMIT_RESP消息中,解析Msg_Id字段的代码
- 共享一段CMPP编程时候,移动网关返回CMPP_SUBMIT_RESP消息中,解析Msg_Id字段的代码
- 移动网关CMPP 2.0-3.0协议归档
- 共享一段Excel导入Notes的代码
- 对《JAVA编程思想》中一段代码的思考
- 一段返回随机记录的代码
- 异常返回的一段代码疑问
- 移动网关 HTTP 无法直接一次返回结果的处理
- 解析csv格式文件的一段C代码
- 一段业务相关的解析代码
- 一段BGR2Y的SIMD代码解析。
- 在JVM退出的时候,执行一段特定的代码。
- CMPP协议的客户端c#实现代码
- 共享一段JS幻灯片代码
- 在移动开发中,关于发送消息及解析消息响应的一点方法
- 一段有关内核、用户空间共享内存的代码
- 第三篇:JAVA网络编程之应用程序协议中消息的成帧与解析(含代码)
- CMPP 移动接口
- ASP.NET - ASP.NET 服务器控件的客户端验证
- MySQL5中文乱码解决
- Memcached 学习笔记一
- ASP.NET - ASP.NET 服务器控件的特例验证结果
- 梁俊熙
- 共享一段CMPP编程时候,移动网关返回CMPP_SUBMIT_RESP消息中,解析Msg_Id字段的代码
- memcached,jcs,jdbc直接访问之 优劣比较
- 内连接与外连接的区别
- 下拉菜单效果
- EJB有状态和无状态会话Bean的区别
- 面向连接的套接字实例[Windows平台]
- root has been locked in Fedora 9
- 必将改变Web的五大技术
- 再谈“字符串拼接”的效率