`
missingchen
  • 浏览: 3594 次
  • 性别: Icon_minigender_1
  • 来自: 冰海
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

发送长短信

阅读更多
    在动手之前google了一下相关资料,查了下规范更正了以前的错误理解:以前以为是与短信头有关,现在才明白原来只是在内容里面增加协议头就可以了,但怎么让短信网关知道你发的是长短信呢?TP_udhi 设置为1即可.
    TP_udhi设置好了,就要组装协议头了,GSM 03.40规范中说协议头有两种,分别是长度为6和长度为7的协议头,我用的是长度为6的协议头,格式如下:
6位协议头格式:05 00 03 XX MM NN
byte 1 : 05, 表示剩余协议头的长度
byte 2 : 00, 这个值在GSM 03.40规范9.2.3.24.1中规定,表示随后的这批超长短信的标识位长度为1(格式中的XX值)。
byte 3 : 03, 这个值表示剩下短信标识的长度
byte 4 : XX,这批短信的唯一标志,事实上,SME(手机或者SP)把消息合并完之后,就重新记录,所以这个标志是否唯一并不是很重要。
byte 5 : MM, 这批短信的数量。如果一个超长短信总共5条,这里的值就是5。
byte 6 : NN, 这批短信的数量。如果当前短信是这批短信中的第一条的值是1,第二条的值是2。
例如:05 00 03 39 02 01
用JAVA代码的话可以新建这样一个字节数组,然后后面加上UTF-8转换后的短信内容得字节数组就可以了
 byte[] tp_udhiHead=new byte[6];
            tp_udhiHead[0]=0x05;
            tp_udhiHead[1]=0x00;
            tp_udhiHead[2]=0x03;
            tp_udhiHead[3]=0x0A;//每条长短信的唯一标示
            tp_udhiHead[4]=(byte)contentArrCount;
            tp_udhiHead[5]=0x01;//默认为第一条

注意事项:(从google上搜来的,基本上也就遇到这些问题)
1、TP_udhi设置为  0x01
2、Msg_Content    按TP_udhi协议填写6字节或者7字节的TP_udhi协议头然后加上经过USC2编码的消息内容。由TP_udhi协议头和消息内容体组成的Msg_Content总长度不能超过140个字节
3、Msg_Fmt   设置为  0x08  UCS2编码;
4、Pk_total和Pk_number 可以不设置,如果要设置,就要分别跟TP_udhi的MM和NN字段一致
感觉用JAVA做这样的东西比较麻烦,要转换过来转换过去的.
分享到:
评论
1 楼 hj270187161 2011-11-30  
TP_udhi  这东西在哪设置啊,我用的是MAS2.0 移动网关给的接口程序

相关推荐

Global site tag (gtag.js) - Google Analytics