热度 12
2012-9-12 14:33
1776 次阅读|
0 个评论
通常情况下,发送中文短信最长为70个汉字,如果大于70个汉字可以采用超长短信发送的方式,需要注意该方式下发送给对方的手机必须具有超长短信显示功能。 一、 超长短信发送 超长短信发送实质:将一个超长的短信内容分为多条短信(每条最长70个汉字)按照一定的协议发送给对方,收费方式仍为多条收费。 超长短信发送时需要将PDU第一个字节内容设为51(普通短信为11,参见《PDU短消息格式说明》),而在短信内容PDU码前加六个字节的超长短信头 。 超长短信协议头(HEX): 05:表示剩余协议头的长度(固定值) 00:这个值在GSM 03.40规范9.2.3.24.1中规定,表示随后的这批超长短信的标识位长度为1(格式中的XX值,可以使用固定值) 03:这个值表示剩下短信标识的长度(固定值) 04:这批短信的唯一标志,事实上,SME(手机或者SP)把消息合并完之后,就重新记录,所以这个标志是否唯一并不是很重要(可以使用固定值) MM:这批短信的数量。如果一个超长短信总共5条,这里的值就是05。 NN:这批短信的数量。如果当前短信是这批短信中的第一条的值是01,第二条的值是02。 将以上六个字节作为短信内容的一部分放置短信内容PDU码最前面,如果原来短信长度为X,则实际发送时的长度应为X+6 4、举例: 二、 超长短信接收 超长短信接收时,需要检测是否为超长短信,如果为超长短信,通过超长短信协议头判断超长短信的条数和当前收到的条数 收到超长短信时,分为多条接收,接收完成需要拼接每条短信形成完整短信内容 当超长短信条数和当前条数相等时,超长短信接收完毕 过滤超长短信协议头(6个字节长) 拼接超长短信 注意:在接收超长短信时,由于网络原因,有可能接收到的短信不是按顺序来接收:如:发送3条短信,接收到的顺序可能为1,3,2,但不影响最终短信内容,拼接短信时不能按照接收到的先后顺序来拼接,而应按照超长短信协议头中的顺序来拼接。