2023年7月31日发(作者:)
.
第一章 概述
1 产品概述
SMPPSMProxy是符合SMPP3.4协议的接口,可以同时满足Unix和WINDOW NT平台的使用。SMPPSMProxy与SMSC建立TCP连接进行通信,并负责短消息发送和接收、维护与SMSC的握手、断连重连等;SMPPSMProxy提供客户API接口函数,包括登录PROXY、退出PROXY、发送短消息、接受短消息、接受响应信息等。SMPPSMProxy支持多线程并发使用发送短消息,SMPPSMProxy和SMSC之间使用的通信协议是SMPP协议。
2 组网结构
SMPPSMProxy就是运行在SP上,负责和SMSC进行SMPP3.4协议的通讯,要求SP的功能实体向SMSC发SMPP_SUBMIT消息,由SMSC返回SMPP_DELIVERY消息给SP。
3 SMProxy的结构
. .
客户程序调用到SMPPSMProxy提供的接口函数实现收发短消息,SMPPSMProxy实现把客户程序所发出的消息按SMPP3.4协议进行编码后发给数据增值业务中心(infoX),由数据增值业务中心(infoX)发送给SMC,并通过数据增值业务中心(infoX)接收SMC所响应的消息与主动下发的消息并进行解码后,通知客户程序接收SMC主动下发的短消息。
第二章 SMPP3.4协议的封装
SMPP协议封装在e包中,主要消息如下
(1)SMPPEnquireLinkMessage 心跳消息,对应SMPP3.4文档中的SMPP_ENQUIRE_LINK消息,是SMPPSMProxy与SMSC的心跳消息。
(2)SMPPEnquireLinkRespMessage 心跳响应消息,对应SMPP3.4文档中的SMPP_ENQUIRE_LINK_RESP,是SMPPSMProxy发送心跳消息后收到的响应消息。
(3)SMPPLoginMessage 请求连接消息,对应SMPP3.4文档中的SMPP_BIND_RECEIVER的消息,是SMPPSMProxy向SMSC发送的建立逻辑请求连接消息。
(4)SMPPLoginRespMessage 请求连接应答消息,对应SMPP3.4文档中的SMPP_BIND_RECEIVER_RESP的消息,是SMPPSMProxy向SMSC发送的建立逻辑请求连接后收到的响应消息。
(5)SMPPDeliverMessage SMSC下发短信,对应SMPP3.4文档中的 SMPP_DELIVER_SM消息,是SMSC下发给SMPPSMProxy的短消息或者状态报告消息。
(6)SMPPDeliverRespMessage 下发短信响应,对应SMPP3.4文档中的
SMPP_DELIVER_SM_RESP消息,是SMPPSMProxy收到的下发短信后的响应消息。
(7)SMPPSubmitMessage 发送短信消息,对应SMPP3.4文档中的 SMPP_SUBMIT_SM消息,是SMPPSMProxy发送短讯的消息。
. .
(8)SMPPSubmitRespMessage 下发短信的响应,对应SMPP3.4 文档中的
SMPP_SUBMIT_SM_RESP消息,是SMPPSMProxy发送短讯的响应消息。
(9)SMPPUnbindMessage 终止连接消息,对应SMPP3.4 文档中的 SMPP_UNBIND消息,是SMSC和SMPPSMProxy终止逻辑连接的消息。
(10)SMPPUnbindRespMessage 终止连接的响应消息,对应SMPP3.4 文档中的
SMPP_UNBIND_RESP消息,是SMSC或SMPPSMProxy收到终止连接后发送的响应消息。
其中的心跳消息(1,2)、建立逻辑连接的消息(3,4)和终止逻辑连接消息(9,10)只是SMPPSMProxy系统内部使用消息,提供给外部的接口中不涉及这六条消息。
第三章 SMPPSMProxy使用说明
1 SMPPSMProxy提供的接口方法描述
1、send
【函数功能】
向SMSC发送SMPP消息,阻塞直到收到响应或超时。
【函数原型】
SMPPMessage send(SMPPMessage message);
【参数说明】
[IN] message - 发送的SMPP消息,包括
SMPPSubmitMessage 提交短信
【处理】
调用这个接口方法,向SMSC发送Submit命令消息。
如果发送消息超时或通信异常则抛出异常,需要调用者捕获处理。
【返回值】
发送SMPPSubmitMessage,返回SMPPSubmitRepMessage;
2 close
【函数功能】
向SMSC发送终止连接SMPP消息,调用之后连接将永久不可用。
【函数原型】
Void close();
【参数说明】 无
【处理】
. .
调用这个接口方法,SMPPSMProxy向SMSC发送SMPPUnbindMessage消息
如果发送消息超时或通信异常则抛出异常,需要调用者捕获处理。
【返回值】 无
3 getConnState
【函数功能】
获取通讯连接的状态方法。
【函数原型】
String getConnState();
【参数说明】 无
【处理】
调用这个接口方法,获取TCP连接状态的描述。
如果发送消息超时或通信异常则抛出异常,需要调用者捕获处理。
【返回值】
当前错误描述,若连接正常则返回null。
2 封装接口方法的SMPPSMProxy的抽象类
SMPPSMProxy在y的包中,封装了Send、close、getConnState方法。SMPPSMProxy是一个抽象类,需要被继承使用。
SMPPSMProxy抽象类的框架如下:
public class SMPPSMProxy
{
public SMPPSMProxy(Args args)
{
//完成初始化和向SMSC登录等工作
}
public SMPPSMProxy(Map args)
{
//完成初始化和向SMSC登录等工作
}
/**
* 发送消息,阻塞直到收到响应或超时。
* 返回为收到的消息
* @exception PException 超时或通信异常。
*/
public SMPPMessage send(SMPPMessage message)
{
//发送消息
. .
}
/**
* 连接终止的处理,由API使用者实现
* SMC连接终止后,需要执行动作的接口
*/
public void onTerminate()
{
}
/**
* 对收到消息的处理。由API使用者实现。缺省返回成功收到的响应
* @param msg 从短消息中心来的消息。
* @return 应该回的响应,由API使用者生成。
*/
public SMPPMessage onDeliver(SMPPDeliverMessage msg)
{
}
/**
* 终止连接。调用之后连接将永久不可用。
*/
public void close()
{
}
/**
* 提供给业务层调用的获取连接状态的方法
*/
public String getConnState()
{
//返回连接状态的描述
}
}
3 使用SMPPSMProxy抽象类
可以直接使用SMPPSMProxy类提供的Send、close和getConnState方法
但是如果SP有接收SMSC下发的短信的要求或SMSC断开连接的时候要求得到事件通知的时候,就必须声明一个新的类继承SMPPSMProxy,重载实现onDeliver( )和onTerminate( )。使用例子参见smppdemo
实际使用SMPPSMProxy封装的send、close和getConnState的接口方法的时候,只需要生成SMSender的对象,然后调用SMSender的send、close和getConnState方法即可。
4 配置参数使用说明
SMPPSMProxy需要的配置参数如下表
参数名称
host
参数例值
10.76.148.147
参数描述
SMSC主机地址的IP地址
. .
port
heartbeat-interval
reconnect-interval
heartbeat-noresponseout
transaction-timeout
Debug
7890
10
10
5
10
true
system-id
SP
password
system-type
SMSC主机开发的端口号
心跳信息发送间隔时间
(单位:秒)
连接中断时重连间隔时间(单位:秒)
需要重连时,连续发出心跳而没有接收到响应的个数(单位:个)
操作超时时间(单位:秒)
true表示属于调试状态,所有的消息被打印输出到屏幕,false表示不属于调试状态,所有的消息不被输出
Identifies the ESME system
requesting to bind as a transmitter
with the SMSC.
The password may be used by the
SMSC to authenticate the ESME
requesting to bind.
Identifies the type of ESME
system requesting to bind as a
transmitter with the SMSC.
addr-ton
0
Indicates Type of Number of the
ESME address.
If not known set to NULL
Numbering Plan Indicator for
ESME
address.
If not known set to NULL.
The ESME address.
If not known set to NULL.
Indicates the version of the SMPP
protocol supported by the ESME.
addr-npi
0
address-range
Interface-version
34
配置文件可以采用我们提供的XML格式,也可以采用其他格式,只要构造的时候能通过Map类型或Arg类型的参数传入指定的参数就可以了。例如可以用java的property文件保存参数,或将配置和SP的应用程序配置放在一起。
下面是以XML格式定义的配置文件
是在的工程目录下,是使用XML写的配置文件,具体内容如下
其中以"
. .
举例说明:如果SMSC的IP地址为10.76.148.168,则只需要修改
5 使用SMPPSMProxy收发短信
参见demo程序。
.
2023年7月31日发(作者:)
.
第一章 概述
1 产品概述
SMPPSMProxy是符合SMPP3.4协议的接口,可以同时满足Unix和WINDOW NT平台的使用。SMPPSMProxy与SMSC建立TCP连接进行通信,并负责短消息发送和接收、维护与SMSC的握手、断连重连等;SMPPSMProxy提供客户API接口函数,包括登录PROXY、退出PROXY、发送短消息、接受短消息、接受响应信息等。SMPPSMProxy支持多线程并发使用发送短消息,SMPPSMProxy和SMSC之间使用的通信协议是SMPP协议。
2 组网结构
SMPPSMProxy就是运行在SP上,负责和SMSC进行SMPP3.4协议的通讯,要求SP的功能实体向SMSC发SMPP_SUBMIT消息,由SMSC返回SMPP_DELIVERY消息给SP。
3 SMProxy的结构
. .
客户程序调用到SMPPSMProxy提供的接口函数实现收发短消息,SMPPSMProxy实现把客户程序所发出的消息按SMPP3.4协议进行编码后发给数据增值业务中心(infoX),由数据增值业务中心(infoX)发送给SMC,并通过数据增值业务中心(infoX)接收SMC所响应的消息与主动下发的消息并进行解码后,通知客户程序接收SMC主动下发的短消息。
第二章 SMPP3.4协议的封装
SMPP协议封装在e包中,主要消息如下
(1)SMPPEnquireLinkMessage 心跳消息,对应SMPP3.4文档中的SMPP_ENQUIRE_LINK消息,是SMPPSMProxy与SMSC的心跳消息。
(2)SMPPEnquireLinkRespMessage 心跳响应消息,对应SMPP3.4文档中的SMPP_ENQUIRE_LINK_RESP,是SMPPSMProxy发送心跳消息后收到的响应消息。
(3)SMPPLoginMessage 请求连接消息,对应SMPP3.4文档中的SMPP_BIND_RECEIVER的消息,是SMPPSMProxy向SMSC发送的建立逻辑请求连接消息。
(4)SMPPLoginRespMessage 请求连接应答消息,对应SMPP3.4文档中的SMPP_BIND_RECEIVER_RESP的消息,是SMPPSMProxy向SMSC发送的建立逻辑请求连接后收到的响应消息。
(5)SMPPDeliverMessage SMSC下发短信,对应SMPP3.4文档中的 SMPP_DELIVER_SM消息,是SMSC下发给SMPPSMProxy的短消息或者状态报告消息。
(6)SMPPDeliverRespMessage 下发短信响应,对应SMPP3.4文档中的
SMPP_DELIVER_SM_RESP消息,是SMPPSMProxy收到的下发短信后的响应消息。
(7)SMPPSubmitMessage 发送短信消息,对应SMPP3.4文档中的 SMPP_SUBMIT_SM消息,是SMPPSMProxy发送短讯的消息。
. .
(8)SMPPSubmitRespMessage 下发短信的响应,对应SMPP3.4 文档中的
SMPP_SUBMIT_SM_RESP消息,是SMPPSMProxy发送短讯的响应消息。
(9)SMPPUnbindMessage 终止连接消息,对应SMPP3.4 文档中的 SMPP_UNBIND消息,是SMSC和SMPPSMProxy终止逻辑连接的消息。
(10)SMPPUnbindRespMessage 终止连接的响应消息,对应SMPP3.4 文档中的
SMPP_UNBIND_RESP消息,是SMSC或SMPPSMProxy收到终止连接后发送的响应消息。
其中的心跳消息(1,2)、建立逻辑连接的消息(3,4)和终止逻辑连接消息(9,10)只是SMPPSMProxy系统内部使用消息,提供给外部的接口中不涉及这六条消息。
第三章 SMPPSMProxy使用说明
1 SMPPSMProxy提供的接口方法描述
1、send
【函数功能】
向SMSC发送SMPP消息,阻塞直到收到响应或超时。
【函数原型】
SMPPMessage send(SMPPMessage message);
【参数说明】
[IN] message - 发送的SMPP消息,包括
SMPPSubmitMessage 提交短信
【处理】
调用这个接口方法,向SMSC发送Submit命令消息。
如果发送消息超时或通信异常则抛出异常,需要调用者捕获处理。
【返回值】
发送SMPPSubmitMessage,返回SMPPSubmitRepMessage;
2 close
【函数功能】
向SMSC发送终止连接SMPP消息,调用之后连接将永久不可用。
【函数原型】
Void close();
【参数说明】 无
【处理】
. .
调用这个接口方法,SMPPSMProxy向SMSC发送SMPPUnbindMessage消息
如果发送消息超时或通信异常则抛出异常,需要调用者捕获处理。
【返回值】 无
3 getConnState
【函数功能】
获取通讯连接的状态方法。
【函数原型】
String getConnState();
【参数说明】 无
【处理】
调用这个接口方法,获取TCP连接状态的描述。
如果发送消息超时或通信异常则抛出异常,需要调用者捕获处理。
【返回值】
当前错误描述,若连接正常则返回null。
2 封装接口方法的SMPPSMProxy的抽象类
SMPPSMProxy在y的包中,封装了Send、close、getConnState方法。SMPPSMProxy是一个抽象类,需要被继承使用。
SMPPSMProxy抽象类的框架如下:
public class SMPPSMProxy
{
public SMPPSMProxy(Args args)
{
//完成初始化和向SMSC登录等工作
}
public SMPPSMProxy(Map args)
{
//完成初始化和向SMSC登录等工作
}
/**
* 发送消息,阻塞直到收到响应或超时。
* 返回为收到的消息
* @exception PException 超时或通信异常。
*/
public SMPPMessage send(SMPPMessage message)
{
//发送消息
. .
}
/**
* 连接终止的处理,由API使用者实现
* SMC连接终止后,需要执行动作的接口
*/
public void onTerminate()
{
}
/**
* 对收到消息的处理。由API使用者实现。缺省返回成功收到的响应
* @param msg 从短消息中心来的消息。
* @return 应该回的响应,由API使用者生成。
*/
public SMPPMessage onDeliver(SMPPDeliverMessage msg)
{
}
/**
* 终止连接。调用之后连接将永久不可用。
*/
public void close()
{
}
/**
* 提供给业务层调用的获取连接状态的方法
*/
public String getConnState()
{
//返回连接状态的描述
}
}
3 使用SMPPSMProxy抽象类
可以直接使用SMPPSMProxy类提供的Send、close和getConnState方法
但是如果SP有接收SMSC下发的短信的要求或SMSC断开连接的时候要求得到事件通知的时候,就必须声明一个新的类继承SMPPSMProxy,重载实现onDeliver( )和onTerminate( )。使用例子参见smppdemo
实际使用SMPPSMProxy封装的send、close和getConnState的接口方法的时候,只需要生成SMSender的对象,然后调用SMSender的send、close和getConnState方法即可。
4 配置参数使用说明
SMPPSMProxy需要的配置参数如下表
参数名称
host
参数例值
10.76.148.147
参数描述
SMSC主机地址的IP地址
. .
port
heartbeat-interval
reconnect-interval
heartbeat-noresponseout
transaction-timeout
Debug
7890
10
10
5
10
true
system-id
SP
password
system-type
SMSC主机开发的端口号
心跳信息发送间隔时间
(单位:秒)
连接中断时重连间隔时间(单位:秒)
需要重连时,连续发出心跳而没有接收到响应的个数(单位:个)
操作超时时间(单位:秒)
true表示属于调试状态,所有的消息被打印输出到屏幕,false表示不属于调试状态,所有的消息不被输出
Identifies the ESME system
requesting to bind as a transmitter
with the SMSC.
The password may be used by the
SMSC to authenticate the ESME
requesting to bind.
Identifies the type of ESME
system requesting to bind as a
transmitter with the SMSC.
addr-ton
0
Indicates Type of Number of the
ESME address.
If not known set to NULL
Numbering Plan Indicator for
ESME
address.
If not known set to NULL.
The ESME address.
If not known set to NULL.
Indicates the version of the SMPP
protocol supported by the ESME.
addr-npi
0
address-range
Interface-version
34
配置文件可以采用我们提供的XML格式,也可以采用其他格式,只要构造的时候能通过Map类型或Arg类型的参数传入指定的参数就可以了。例如可以用java的property文件保存参数,或将配置和SP的应用程序配置放在一起。
下面是以XML格式定义的配置文件
是在的工程目录下,是使用XML写的配置文件,具体内容如下
其中以"
. .
举例说明:如果SMSC的IP地址为10.76.148.168,则只需要修改
5 使用SMPPSMProxy收发短信
参见demo程序。
.
发布评论