协议开发 中移动CMPP2.0协议API(四)
云网(jimzj@21cn.om)
接上篇:
八、链路检测
根据CMPP协议当链路检测包发出超过时间T后未收到响应,应立即再发送链路检测包,再连续发送N-1次后仍未得到响应则断开此连接,并根据需要重新建立链接(T=60秒,N=3)。但也可以加快链路检测的速度;这个并不影响API的正常运行:
在线程中添加一个检测的事件,当检测到要发送链路检测时,触发链路检测线程:
//要链路检测测试( 链路是每30秒发送一次数据 )
if( _pscoket->_needacttest > 0 || _pscoket->_lastacttime <= ( time( NULL ) - 30 ))
{
_pscoket->_lastacttime = time( NULL ) + 1 ;
SetEvent( _pscoket->_hevnt_acti ) ;
}
//链路检测线程部分代码:
if( WaitForSingleObject( _pscoket->_hevnt_acti, _pscoket->_dwmsec ) == WAIT_OBJECT_0 )
{
try
{
err = _pscoket->_ActiveTest() ;
}
catch( ... )
{
}
//根据发送链路检测结果来作进一步动作
if( err != 0 )
{
//重发可断开链接,重新初始SOCKET接口等
………….
}
致此,我基本上已把整个CMPP协议的开发过程写完,中间还附带了部分代码,希望对大家有所帮助,如果有什么不明的也可以直接写邮件到我的邮箱 jimzj@21cn.com,我将为你解答一些CMPP开发中的问题或者是计费拔测碰到的字段设置的问题(可以是移动梦网,联通在线或电信巨龙)。
九、短信二次开发
另外对于没有申请到移动或联通短信接口的用户,可以通过提供的一套
API接口,可以快速的通过此API接口发送短信息:开发包包括以下内容:
5.0、文件说明
目录名
子目录名
文件名
功能说明
BGAPI
Exam_BC
BCB例程
Exam_VC
VC例程
FuncDef.cpp
动态库调用cpp文件
FuncDef.h
动态库调用h文件
BGAPI.Dll
动态库
短信API客户端开发使用说明.doc
说明文档
大家如果要下载这个开发包,可以到www.ebase168.com上的短信快车主页面中的二次开发就可以下载,测试。所附带的两个例程中已有登录用户的企业名称和密码,通过这个API,用户还可以自已做一个企业服务器,再下带10万个客户端,这样去开发自己的客户群。
开发所要的几个接口的定义:
5.1初始化API函数
函数名:_IFInitInterface()
功能:完成初始化的工作;
1)、系统资源的初始化:系统资源的创建和设置;定时资源的设置;通信消息机制的设置;内存管理的初始化设置;
2)、通信参数初始化:包括服务器端IP地址;客户端器端IP地址;通信端口号;
3)、尝试连接;
返回: 0 成功
1 参数 fCltDeliver 不能为空
2 参数 fCltSmsStatus 不能为空
3 初始化异常
99 系统错误
说明:
参数中的所要的回调函数用于在接收到中心服务器下发的短信或短信状态是调用,用户应在接收到后,把信息保存后尽快返回一个0表示成功接收到短信或状态,不要在回调函数中直接处理信息或状态,以免影响接收的速度;回调函数的定义请参见FuncDef.h中的定义;
5.2登录注册函数
函数名:_Login()
功能:完成向中心服务器注册的工作;
1)、检测用户参数是否正确;
2)、向中心服务器发出一个注册指令;
返回: 0 登录已提交
1 未初始化
2 企业代码 <= 0
3 用户名称 <= 0
5.3短信提交
函数名:_Submit()
功能:向中心服务器提交一条短信息;
1)、检测用户提交的参数是否正确;
2)、向中心服务器发出短信提交指令;
说明:
返回: 0 提交成功
1 未初始化
2 未注册
3 注册接收地址有误
4 原始编码 <= 0
5 源地址含有非法字符(只能空或数字)
6 源地址长度 > 5
7 目标地址含有非法字符(只能数字)
8 目标地址 < 11
9 编码 < 0
10 数据长度 <= 0
11 中文 > 65个字符 或 英文 > 130个字符
12 流量限制 <= 100条/秒
13发送失败
5.7接收短信息回调函数
函数名:TProcGetDeliver()
功能:用来接收中心服务器下发的短信;
1)、接收短信息;
返回: 0 客户端成功接收
说明:
回调函数用于在接收到中心服务器下发的短信,用户应在接收到后,把信息保存后尽快返回一个0表示成功接收到短信,不要在回调函数中直接处理信息,以免影响接收的速度;回调函数的定义请参见FuncDef.h中的定义;
5.8接收短信状态回调函数
函数名:TProcGetSmsStatus()
功能:用来接收中心服务器下发的状态;
1)、接收注册回应;
2)、接收通讯测试状态
3)、接收提交短信返回状态
4)、接收短信回应状态
返回: 0 客户端成功接收
说明:
回调函数用于在接收到中心服务器下发的状态,用户应在接收到后,把信息保存后尽快返回一个0表示成功接收到状态,不要在回调函数中直接处理信息,以免影响接收的速度;回调函数的定义请参见FuncDef.h中的定义;
云网(于广州)