长短信实现系列之移动CMPP2.0

本文介绍了长短信的实现原理,包括TP_udhi协议头的使用,详细解析了6字节和7字节协议头的格式,并通过实际操作描述了在不同参数设置下的短信发送情况,最终得出结论,指出了成功发送长短信的关键设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1)背景
目前我们的短信发送基本上就是超过140字节(甚至更少)就切分(移动普通短信超过140个字节甚至都发送不了,联通倒是可以),然后分几条发给客户,而且也不能保证顺序,用户体验不好,
运营这边抱怨说精简再精简还是超过了字数,于是长短信的支持就成为必须的事情了。

2)原理


2.1)长短信的协议和普通短信的协议稍有不同


2.1.1) TP_udhi=1
在Msg_content中加入6个字节或者7个字节的udhi头做为前缀

2.1.2)6个字节的TP_udhi协议头
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。<

功能特点: 1.遵照CMPP2.0协议实现,模拟了短信网关,支持CONNECT,SUBMIT,DELIVER,QUERY,CANCEL,TERMINATE消息。 2.支持多个客户端登录,支持单连接和双连接类型,支持标准CMPP和亚信API. 3.服务端自动生成Msgid,支持状态报告. 4.支持对客户端进行鉴权,用户可以自行配置有效的客户端ICPID,SPID,PWD,和有效的IP地址。 5.以二进制形式显示消息流内容,并且能够把消息包的每个字段都打印出来,当然这会影响一些效率。 6.模拟网关不对submit各字段的合法性进行判断(如msgsrc必须是企业代码icpid,srcid必须是接入号 发送错误代码介绍:0 = TRS_SUCCESS : 正确 1 = TRS_PACKET_ERR : 消息结构错 2 = TRS_CMD_ERR : 命令字错 3 = TRS_SEQ_DUPLICATE : 消息序号重复 4 = TRS_PACKET_LEN_ERR : 消息度错 5 = TRS_FEE_ERR : 资费错 6 = TRS_MSG_LEN_ERR : 超过最大信息 7 = TRS_SRV_CODE_ERR : 业务代码错 8 = TRS_FLUX_ERR : 流量控制错 9 = TRS_NOT_SRV_USER : 本网关不负责服务此计费号码,前转判断错(此SP不应发往本ISMG) 10 = TRS_SRC_ID_ERR : Src_Id错误 11 = TRS_MSG_SRC_ERR : Msg_src错误 12 = TRS_FEE_TERMINAL_ERR : Fee_terminal_Id错误 13 = TRS_DEST_TERMINAL_ERR : Dest_terminal_Id错误 160 = IP_ADDRESS_ERR : ZTE_EXTENED 帐号源IP地址错误 161 = LINK_FULL : ZTE_EXTENED 帐号已经建立了15条链路 162 = LOCK_MUTEX_ERR : ZTE_EXTENED 建链时锁错误 163 = RGSTRDDLVRY_ERR : ZTE_EXTENED Registered_Delivery取值错误 164 = FEEUSERTYPE_ERR : ZTE_EXTENED FeeUserType取值错误 165 = TERMINALTYPE_ERR : ZTE_EXTENED TerminalType取值错误 166 = MSGFMT_ERR : ZTE_EXTENED MsgFmt取值错误 167 = MSGFWDTYPE_ERR : ZTE_EXTENED msgFwdType取值错误 168 = USERTYPE_ERR : ZTE_EXTENED UserType取值错误 169 = ROUTE_ERR : ZTE_EXTENED 路由失败 170 = SMMC_ERR : ZTE_EXTENED 信息过滤失败 171 = IAGWM_LINK_DOWN : ZTE_EXTENED 与IAGW M模块断链 172 = SEND_AUTH_ERR : ZTE_EXTENED 给IAGW M模块发消息失败,非断链 173 = AUTH_ERR : ZTE_EXTENED IAGW M认证失败 174 = LICENSE_FAILED : ZTE_EXTENED 超过系统license限制 175 = TRANS_ERR : ZTE_EXTENED 消息转发错误 176 = RESP_TIME_OUT : ZTE_EXTENED 等resp超时 177 = FATAL_ERR : ZTE_EXTENED 当错误码为-1时转换为此值
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值