SP接入API(win32)使用手册_第1页
SP接入API(win32)使用手册_第2页
SP接入API(win32)使用手册_第3页
SP接入API(win32)使用手册_第4页
SP接入API(win32)使用手册_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

SPAPI使用手册说明SPSP接入的速度,傲天公司推出本套SPAPIAPI,SP不用关心网络连接处理,线程掌握和SGIP协议,只用关心具体的业务流程处理。API构造API以大事驱动的方式工作,调用初试始化函数Startup后,一系列线程组件开头Submit发送线程,连接监听线程,DeliverSP调Submit函数时,Submit处理线程自动生成Submit协议包并将该包发送给网关系统,同时接收网关的SubmitResponsResponseResponseDeliverReport时,Deliver处理线程会自动触发相应大事,调用用户定义的业务处理函数。对网关系统的连接治理由API自动完成。变量类型定义C++:typedefunsignedcharUINT_1;typedefunsignedshortUINT_2;typedefunsignedintUINT_4;//Deliver包构造typedefstructdeliverstr{UINT_4sequencenumber1;UINT_4sequencenumber2;UINT_4sequencenumber3;charusernumber[22];charspnumber[22];UINT_1tp_pid;UINT_1 tp_udhi;UINT_1 messagecoding;UINT_4 messagelength;char messagecontent[160];}DeliverStr;//Report包构造typedefstructreportstr{UINT_4 sequencenumber1;UINT_4 sequencenumber2;UINT_4 sequencenumber3;char usernumber[22];UINT_1 state;UINT_1 errcode;}ReportStr;//MTResponse构造typedefstructmtrespstr{UINT_4sequencenumber1;UINT_4sequencenumber2;UINT_4sequencenumber3;UINT_1result;}MTRespStr;//Submit错误构造,当Submit发送不成功时,在Deliver处理中返回该构造typedefstructmterrorstr{UINT_4sequencenumber1;UINT_4sequencenumber2;UINT_4sequencenumber3;INT_4 errortype; //1:由于连接不上SMG2:发送前觉察该包超时3:包发送失败且超过重发次数INT_4 result;//ResponseresultResponseResult值,否则是内部的错误码:负值。}MTErrorStr;Delphi://Report包构造typeReportStr=packedRecordsequencenumber1:LongInt;sequencenumber2:LongInt;sequencenumber: LongInt;usernumber:packedArray[0..21]ofchar;state:char;errcode:char;end;//Deliver包构造typeDeliverStr=packedrecordsequencenumber1:LongInt;sequencenumber2:LongInt;sequencenumber3:LongInt;usernumber:packedarray[0..21]ofchar;spnumber:packedarray[0..21]ofchar;tp_pid:char;tp_udhi:char;messagecoding:char;messagelength:integer;messagecontent:packedarray[0..159]ofchar;end;//MTResponse包构造typeMTRespStr=packedrecordsequencenumber1:LongInt;sequencenumber2:LongInt;sequencenumber3:LongInt;result:char;end;//Submit错误构造,当Submit发送不成功时,在Deliver处理中返回该构造typeMTErrStr=packedrecordsequencenumber1:LongInt;sequencenumber2:LongInt;sequencenumber3:LongInt;errortype:integer;end;接口函数Strartupintchar*

Startup(char* cLocalIp,short iLocalPort,char* cSmgIp,short iSmgPort,cLoginName,char* cPassword,int lSocketTimeOut,int lMTTimeOut,intiSrcNode,intlMTThread,intlMaxListNode,intlMTMaxRetryTime,intlMOThread,void(*fProcessDeliver)(DeliverStrdeliver),void(*fProcessReport)(ReportStrreport),void(*fProcessResponse)(MTRespStrresponse),void(*fProcessMTError)(MTErrorStrmterror));该函数是API的初始化函数,在使用API前,必需调用该函数参数说明:cLocalIp:本地IP地址iLocalPort:本地Socket监听端口cSmgIp:网关系统IPcSmgPort:网关系统监听端口cLoginName:连接网关的用户名cPassword:连接网关的密码lSocketTimeOut:Socket超时〔秒〕lMTTimeOut:Submit的超时,在超时的时间内,假设该MT没有成功发送,则返回错误包,MTErrorStriSrcNode:SP节点编号lMTThread:Submit处理线程数lMaxListNode:最大待处理队列节点数lMTMaxRetryTime:Submit发送失败重试次数lMOThread:Deliver处理线程数deliver:用户定义的Deliver处理函数〔为NULLDeliver包〕report:用户定义的Report处理函数〔为NULL时不处理Report包〕response:用户定义的SubmitResponse处理函数〔为NULL时不处理SubmitResponse包〕mterror:用户定义的错误处理函数〔为NULL时不处理错误包〕返回值:

0、已经调用了Startup1、成功-1、失败SubmitSP发送消息时调用该函数,函数的输入参数与SGIPSubmit消息包的内容想对应int Submit(char*spnumber,char*chargenumber,intuser_count,char*usernumber,char*corpid,char*service_type,UINT_1fee_type,char*fee_value,参数说明:

char*given_value,UINT_1agent_flag,UINT_1mo_flag,UINT_1priority,char*expire_time,char*schedule_time,UINT_1report_flag,UINT_1tp_pid,UINT_1tp_udhi,UINT_1message_coding,UINT_1message_type,UINT_4message_length,char*message_content,char*reserve,UINT_4*sequencenumber1,UINT_4*sequencenumber2,UINT_4*sequencenumber3)spnumber:SP的接入号码ChargeNumber:付费号码user_count:接收手机用户个数usernumbe:接收该短消息的手机号,多个号码间以“corpId:企业代码service_type:业务代码fee_type:计费类型fee_value:该条短消息的收费值given_value:赠送用户的话费agent_flag:代收费标志mo_flagMT消息的缘由priority:优先级expire_time:短消息寿命的终止时间schedule_time:短消息定时发送的时间report_flag:状态报告标记tp_pid:GSM协议类型tp_udhi:GSM协议类型message_coding:短消息的编码格式message_type:信息类型message_length:短消息内容的长度message_content:短消息的内容reserve:保存sequencenumber1,sequencenumber2,sequencenumber3:短消息序列号,由API按协议标准生成,并返回返回值:0:队列满1:成功放入队列Deliver处理函数void(*fProcessDeliver)(DeliverStrdeliver)用户自定义的业务处理函数,作为指针传递给Startup留意:该函数必需是线程安全的,其中访问的全局变量必需承受同步机制,假设SP使用的开发工具为C++BuilderDelphi,对VCL的调用可承受发送消息的方式来同步〔SendMessage或PostMessag。Reportvoid(*fProcessReport)(ReportStrreport)留意:同上MTResponse处理函数void(*fProcessResponse)(MTRespStrresponse)留意:同上CleanupintCleanup该函数清空全部初始化内容,完毕运行。Deliverint RespStrutMTErrorStr*MTErrorStruct)DeliverStartuplMOThread设置为0,并不供给处理包的函数函数依据取得包的类型返回不同的构造。参数说明:包,3:MTResponse4:Submit错误包DeliverStructType=1时返回ReportStruct:当Type=2时返回RespStruct:当Type=3时返回MTErrorStruct:当Type=4时返回返回值:

0:取得最终一个包1:取得一个包-1:取包错误或未取到包范例1、先定义DLL中的外部函数:C++:extern “C“ declspec(dllimport) int Startup(char* cLocalIp,short iLocalPort,char*cSmgIp,shortiSmgPort, char*cLoginName,char*cPassword,intlSocketTimeOut,intlMTTimeOut, intiSrcNode,intlMTThread,intlMaxListNode,intlMTMaxRetryTime,intlMOThread,void(*fProcessDeliver)(DeliverStrdeliver),void(*fProcessReport)(ReportStrreport),void(*fProcessResponse)(MTRespStrresponse),void(*fProcessMTError)(MTErrorStrmterror));extern“C“ declspec(dllimport)int Cleanup;extern“C“ declspec(dllimport)int Submit(char*spnumber,char*chargenumber,intuser_count,char*usernumber,char*corpid,char*service_type,UINT_1fee_type,char*fee_value,char*given_value,UINT_1agent_flag,UINT_1mo_flag,UINT_1priority,char*expire_time,char*schedule_time,UINT_1report_flag,UINT_1tp_pid,UINT_1tp_udhi,UINT_1message_coding,UINT_1message_type,UINT_4message_length,char*message_content,char*reserve,UINT_4*sequencenumber1,UINT_4*sequencenumber2,UINT_4*sequencenumber3);Delphi:functionStartUp(cLocalIp:pchar;iLocalPort:integer;cSmgIp:pchar;iSmgPort:integer;cLoginName,cPassword:pchar;lSocketTimeOut,lMTTimeOut,iSrcNode,lMTThread,lMaxListNode,lMTMaxRetryTime,lMOThread:integer;deliver:TDeliver;aa,bb,cc:pointer):integer;cdecl;external”SGIP.DLL”name”_Startup”;functionSubmit(spnumber,chargenumber:pchar;user_count:integer;usernumber,corpid,service_type:pchar;fee_type:char;fee_value,given_value:pchar;agent_flag,mo_flag,priority:char;expire_time,schedule_time:pchar;report_flag,tp_pid,tp_udhi,message_coding,message_type:char;message_length:LongInt;message_content,reserve:pchar;varsequencenumber1,sequencenumber2,sequencenumber3:LongInt):integer;cdecl;external”SGIP.DLL”name”_Submit”;2、定义业务处理函数C++:voidPDeliver(DeliverStr deliver);voidPReport(ReportStrreport);voidPResponse(MTRespStr response);voidPerror(MTErrorStrmterror);voidPDeliver(DeliverStr deliver){…//对于全局变量加锁CountLock->Ente

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论