美
美国提子
Unregistered / Unconfirmed
GUEST, unregistred user!
我是SP已经成功连上ISMG网关了。
我发送短信(CMPP_SUBMIT)SP发送给ISMG,发不出。不知道为什么?我把这部分代码贴一下,希望能给我解答一下。
//////////////////////////////发送消息
procedure Thrdo2.this_dosubmit;
var
cql_CMPP_SUBMIT_tag:TCMPP_SUBMIT_tag;
cql_Cmpp_Submit_StoI:TCmpp_Submit_StoI;
cql_SizeIni1:integer;
begin
////////////////////////////////////////////////////////////////////////初始化
FillChar(cql_CMPP_SUBMIT_tag,SizeOf(tCMPP_SUBMIT_tag),0);
//////////////////////////////////////////////////////////////////////设置参数
with cql_CMPP_SUBMIT_tag do
begin
Pk_total:=1;
Pk_number:=1;
Registered_Delivery:=0;
Msg_level:=0;
strpcopy(Service_Id,'hello');
Fee_UserType:=0;
strpcopy(Fee_terminal_Id,'');
TP_pId:=0;
TP_udhi:=0;
Msg_Fmt:=15;
strpcopy(Msg_src,g_SP_Id);
strpcopy(FeeType,'02');
strpcopy(FeeCode,'000010');
strpcopy(ValId_Time,'');
strpcopy(At_Time,'');
strpcopy(Src_Id,g_Src_Id);
DestUsr_tl:=1;
strpcopy(Dest_terminal_Id,u_fssjhm);
Msg_Length:=140;
strpcopy(Msg_Content,u_nr);
//Reserve 保留
end;
try
/////////////////////////////////////////////////得到CMPP_SUBMIT消息字节长度
cql_SizeIni1:=Sizeof(cql_Cmpp_Submit_StoI);
FillChar(cql_Cmpp_Submit_StoI,cql_SizeIni1,0);
Move(cql_CMPP_SUBMIT_tag,cql_Cmpp_Submit_StoI.body,SizeOf( tCMPP_SUBMIT_tag));
with cql_Cmpp_Submit_StoI do
begin
head.Total_Length:=htonl(SizeOf( cql_Cmpp_Submit_StoI));
head.Command_Id:=htonl(CMPP_SUBMIT);
head.Sequence_Id:=htonl(main.this_cmpplsh);
end;
///////////////////////////////////////////////////////????????????
///问题在下面就是发送失败。长度是299,对的嘛~ 我不解?????????????
if main.ClientSocket1.Socket.SendBuf(cql_Cmpp_Submit_StoI,cql_SizeIni1) <> cql_SizeIni1 then
begin
//////////////////////////////////////////////////////标记页面发送失败数+1
g_yddx_sedbad:=inttostr(strtoint(g_yddx_sedbad)+1);
Synchronize(this_refreshsedbad);
u_title:=formatdatetime('yyyy年mm月dd日 hh:mm:ss',now)+':【移动短信发送线程发送CMPP_SUBMIT失败!】';
Synchronize(this_itemadd);
//////////////////////////////////////////////////////////发送成功,置标志
u_sedyddxquery.SQL.Text:=' UPDATE ' +
' LS_DXXHK PARTITION("DATAPRM") '+
' SET FSBZ = ''1'' '+
' WHERE DXXID= '+inttostr(u_dxxid);
end
else
begin
//////////////////////////////////////////////////////标记页面发送成功数+1
g_yddx_sedok:=inttostr(strtoint(g_yddx_sedok)+1);
Synchronize(this_refreshsedok);
u_title:=formatdatetime('yyyy年mm月dd日 hh:mm:ss',now)+':【移动短信发送线'+
'程发送CMPP_SUBMIT成功!短信内容:'+u_nr+'】';
Synchronize(this_itemadd);
//////////////////////////////////////////////////////////发送失败,置标志
u_sedyddxquery.SQL.Text:=' UPDATE ' +
' LS_DXXHK PARTITION("DATAPRM") '+
' SET FSBZ = ''2'' '+
' WHERE DXXID= '+inttostr(u_dxxid);
end;
u_sedyddxquery.Close;
u_sedyddxquery.ExecSQL;
except
on e: exception do
begin
//////////////////////////////////////////////////////标记页面发送失败数+1
g_yddx_sedbad:=inttostr(strtoint(g_yddx_sedbad)+1);
Synchronize(this_refreshsedbad);
u_title:=formatdatetime('yyyy年mm月dd日 hh:mm:ss',now)+':【移动短信发送线程发送CMPP_SUBMIT消息异常:' + e.Message;
Synchronize(this_itemadd);
//////////////////////////////////////////////////////////发送失败,置标志
u_sedyddxquery.SQL.Text:=' UPDATE ' +
' LS_DXXHK PARTITION("DATAPRM") '+
' SET FSBZ = ''2'' '+
' WHERE DXXID= '+inttostr(u_dxxid);
u_sedyddxquery.Close;
u_sedyddxquery.ExecSQL;
end;
end;
//////////////////////////////////////////////////////////////////////////////
end;
(网上也有相关的华为和东软的开发软件,也发不通)!
请高手为我解答~~~~ 200分不知道够不够 不够再加也行~~~
我发送短信(CMPP_SUBMIT)SP发送给ISMG,发不出。不知道为什么?我把这部分代码贴一下,希望能给我解答一下。
//////////////////////////////发送消息
procedure Thrdo2.this_dosubmit;
var
cql_CMPP_SUBMIT_tag:TCMPP_SUBMIT_tag;
cql_Cmpp_Submit_StoI:TCmpp_Submit_StoI;
cql_SizeIni1:integer;
begin
////////////////////////////////////////////////////////////////////////初始化
FillChar(cql_CMPP_SUBMIT_tag,SizeOf(tCMPP_SUBMIT_tag),0);
//////////////////////////////////////////////////////////////////////设置参数
with cql_CMPP_SUBMIT_tag do
begin
Pk_total:=1;
Pk_number:=1;
Registered_Delivery:=0;
Msg_level:=0;
strpcopy(Service_Id,'hello');
Fee_UserType:=0;
strpcopy(Fee_terminal_Id,'');
TP_pId:=0;
TP_udhi:=0;
Msg_Fmt:=15;
strpcopy(Msg_src,g_SP_Id);
strpcopy(FeeType,'02');
strpcopy(FeeCode,'000010');
strpcopy(ValId_Time,'');
strpcopy(At_Time,'');
strpcopy(Src_Id,g_Src_Id);
DestUsr_tl:=1;
strpcopy(Dest_terminal_Id,u_fssjhm);
Msg_Length:=140;
strpcopy(Msg_Content,u_nr);
//Reserve 保留
end;
try
/////////////////////////////////////////////////得到CMPP_SUBMIT消息字节长度
cql_SizeIni1:=Sizeof(cql_Cmpp_Submit_StoI);
FillChar(cql_Cmpp_Submit_StoI,cql_SizeIni1,0);
Move(cql_CMPP_SUBMIT_tag,cql_Cmpp_Submit_StoI.body,SizeOf( tCMPP_SUBMIT_tag));
with cql_Cmpp_Submit_StoI do
begin
head.Total_Length:=htonl(SizeOf( cql_Cmpp_Submit_StoI));
head.Command_Id:=htonl(CMPP_SUBMIT);
head.Sequence_Id:=htonl(main.this_cmpplsh);
end;
///////////////////////////////////////////////////////????????????
///问题在下面就是发送失败。长度是299,对的嘛~ 我不解?????????????
if main.ClientSocket1.Socket.SendBuf(cql_Cmpp_Submit_StoI,cql_SizeIni1) <> cql_SizeIni1 then
begin
//////////////////////////////////////////////////////标记页面发送失败数+1
g_yddx_sedbad:=inttostr(strtoint(g_yddx_sedbad)+1);
Synchronize(this_refreshsedbad);
u_title:=formatdatetime('yyyy年mm月dd日 hh:mm:ss',now)+':【移动短信发送线程发送CMPP_SUBMIT失败!】';
Synchronize(this_itemadd);
//////////////////////////////////////////////////////////发送成功,置标志
u_sedyddxquery.SQL.Text:=' UPDATE ' +
' LS_DXXHK PARTITION("DATAPRM") '+
' SET FSBZ = ''1'' '+
' WHERE DXXID= '+inttostr(u_dxxid);
end
else
begin
//////////////////////////////////////////////////////标记页面发送成功数+1
g_yddx_sedok:=inttostr(strtoint(g_yddx_sedok)+1);
Synchronize(this_refreshsedok);
u_title:=formatdatetime('yyyy年mm月dd日 hh:mm:ss',now)+':【移动短信发送线'+
'程发送CMPP_SUBMIT成功!短信内容:'+u_nr+'】';
Synchronize(this_itemadd);
//////////////////////////////////////////////////////////发送失败,置标志
u_sedyddxquery.SQL.Text:=' UPDATE ' +
' LS_DXXHK PARTITION("DATAPRM") '+
' SET FSBZ = ''2'' '+
' WHERE DXXID= '+inttostr(u_dxxid);
end;
u_sedyddxquery.Close;
u_sedyddxquery.ExecSQL;
except
on e: exception do
begin
//////////////////////////////////////////////////////标记页面发送失败数+1
g_yddx_sedbad:=inttostr(strtoint(g_yddx_sedbad)+1);
Synchronize(this_refreshsedbad);
u_title:=formatdatetime('yyyy年mm月dd日 hh:mm:ss',now)+':【移动短信发送线程发送CMPP_SUBMIT消息异常:' + e.Message;
Synchronize(this_itemadd);
//////////////////////////////////////////////////////////发送失败,置标志
u_sedyddxquery.SQL.Text:=' UPDATE ' +
' LS_DXXHK PARTITION("DATAPRM") '+
' SET FSBZ = ''2'' '+
' WHERE DXXID= '+inttostr(u_dxxid);
u_sedyddxquery.Close;
u_sedyddxquery.ExecSQL;
end;
end;
//////////////////////////////////////////////////////////////////////////////
end;
(网上也有相关的华为和东软的开发软件,也发不通)!
请高手为我解答~~~~ 200分不知道够不够 不够再加也行~~~