smgp3.3协议 MT消息总是返回10(消息结构错误) 怎么回事?
[INFO ] 2010-01-04 14:29:15,984--> MT-TEST Start[INFO ] 2010-01-04 14:29:15,984-->连接主机:219.XXX.X.XX端口:3058
[INFO ] 2010-01-04 14:29:16,218-->成功建立起和网关的socket连接
[DEBUG] 2010-01-04 14:29:16,234-->FinalDef.CMD_SMGP_LOGIN==1
[DEBUG] 2010-01-04 14:29:16,234-->this.lCommand_ID==1
[INFO ] 2010-01-04 14:29:16,234-->com.sxit.smgp3.TSMGP_LOGIN 消息处理,序列号=1
[DEBUG] 2010-01-04 14:29:16,234-->企业代码:XXXX,密码:XXXX,SP:XX XX XX...
[DEBUG] 2010-01-04 14:29:16,250-->md5散列码:XX XX XX...
[DEBUG] 2010-01-04 14:29:16,250-->lTotal_Length==42
[DEBUG] 2010-01-04 14:29:16,250-->lCommand_ID==1
[DEBUG] 2010-01-04 14:29:16,250-->lSerial_ID==1
[INFO ] 2010-01-04 14:29:16,250-->com.sxit.smgp3.TSMGP_LOGIN 发送包体成功
[DEBUG] 2010-01-04 14:29:16,484-->读connectresp消息时输入流长度为:33
[INFO ] 2010-01-04 14:29:16,484-->本次输入流读取完毕,totalLength=33
[DEBUG] 2010-01-04 14:29:16,484-->返回包长度解析后为:33
[DEBUG] 2010-01-04 14:29:16,484-->返回包命令字解析后=-2147483647,实际=-2147483647
[DEBUG] 2010-01-04 14:29:16,484-->返回包序列号解析后为:1
[INFO ] 2010-01-04 14:29:16,484-->connectResp消息解析成功,status=0,sequenceID=1
[INFO ] 2010-01-04 14:29:16,484-->连接ISMG返回值:2
[DEBUG] 2010-01-04 14:29:16,484-->this.lCommand_ID==4
[INFO ] 2010-01-04 14:29:16,484-->com.sxit.smgp3.TSMGP_ACTIVE_TEST 消息处理,序列号=2
[DEBUG] 2010-01-04 14:29:16,484-->lTotal_Length==12
[DEBUG] 2010-01-04 14:29:16,484-->lCommand_ID==4
[DEBUG] 2010-01-04 14:29:16,484-->lSerial_ID==2
[INFO ] 2010-01-04 14:29:16,484-->com.sxit.smgp3.TSMGP_ACTIVE_TEST 发送包体成功
[DEBUG] 2010-01-04 14:29:16,718-->读activeresp时输入流可读长度为:12
[INFO ] 2010-01-04 14:29:16,718-->本次输入流读取完毕,totalLength=12
[DEBUG] 2010-01-04 14:29:16,718-->返回包长度解析后为:12
[DEBUG] 2010-01-04 14:29:16,718-->返回包命令字解析后=-2147483644,实际=-2147483647
[DEBUG] 2010-01-04 14:29:16,718-->返回包序列号解析后为:2
[INFO ] 2010-01-04 14:29:16,718-->测试链路返回值:0
[DEBUG] 2010-01-04 14:29:16,718-->this.lCommand_ID==2
[INFO ] 2010-01-04 14:29:16,718-->com.sxit.smgp3.TSMGP_SUBMIT 消息处理,序列号=3
[DEBUG] 2010-01-04 14:29:16,718-->TLV 包长度=222
[INFO ] 2010-01-04 14:29:16,718-->接收方:150XXXXXX,业务代码:13
[DEBUG] 2010-01-04 14:29:16,718-->TLV 包长度=222
[INFO ] 2010-01-04 14:29:16,718-->tlv.length包长度:222
[INFO ] 2010-01-04 14:29:16,718--> 组装包长度:376
[DEBUG] 2010-01-04 14:29:16,718-->lTotal_Length==388
[DEBUG] 2010-01-04 14:29:16,718-->lCommand_ID==2
[DEBUG] 2010-01-04 14:29:16,718-->lSerial_ID==3
[INFO ] 2010-01-04 14:29:16,718-->com.sxit.smgp3.TSMGP_SUBMIT 发送包体成功
[DEBUG] 2010-01-04 14:29:16,953-->读submitresp时输入流可读长度为:26
[INFO ] 2010-01-04 14:29:16,953-->本次输入流读取完毕,totalLength=26
[DEBUG] 2010-01-04 14:29:16,953-->返回包长度解析后为:26
[DEBUG] 2010-01-04 14:29:16,953-->返回包命令字解析后=-2147483646
[DEBUG] 2010-01-04 14:29:16,953-->返回包序列号解析后为:3
[INFO ] 2010-01-04 14:29:16,953-->TSMGP_RESP消息解析成功,status=10,sequenceID=3
[INFO ] 2010-01-04 14:29:16,953-->发送MT返回值:10 --- seqid:3
[INFO ] 2010-01-04 14:29:16,953-->socket连接关闭成功
demo 代码:
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import com.sxit.smgp3.SMGP3;
import com.sxit.smgp3.TSMGP_RESP;
import com.sxit.smgp3.TSMGP_SUBMIT;
import com.sxit.smgp3.TSMGP_TLV;
import com.sxit.smgp3.socket.SMGPSocket;
import com.sxit.util.Common;
public class TestMT {
/**
* Logger for this class
*/
private static final Log log = LogFactory.getLog(TestMT.class);
public static void main(String args[]) throws Exception
{
log.info(" MT-TEST Start ");
SMGP3 smgp=new SMGP3();
int socketID=smgp.SMGP_Connect("219.XXX.XX.XX",3058, "XXXXX", "XXXX");
log.info("连接ISMG返回值:"+socketID);
if (socketID>0)
{
int test_ret=smgp.SMGPActiveTest(socketID);
log.info("测试链路返回值:"+test_ret);
if (test_ret==0)
{
TSMGP_SUBMIT submit=new TSMGP_SUBMIT();
submit.cMsgType=6;
submit.cNeedReport=1;
submit.cPriority=0;
submit.sServiceID="13";
submit.sFeeType="00";
submit.sFeeCode="0";
submit.sFixedFee="0";
submit.sValidTime="";
submit.sAtTime="";
submit.sSrcTermID="10635XXXXXXX";
submit.sChargeTermID="010XXXXXXX";
submit.sDestTermID="150XXXXXXX";
submit.ucMsgFormat=15;
submit.sMsgContent="sxit测试短信5555566";
submit.sReserve="";
TSMGP_TLV tlv=new TSMGP_TLV();
tlv.b_cDestMaskFlag=true;
tlv.cDestMaskFlag=1;
tlv.b_cFeeFlag=true;
tlv.cFeeFlag=1;
tlv.b_cFeeMaskFlag=true;
tlv.cFeeMaskFlag=1;
tlv.b_cMServiceID=true;
tlv.cMServiceID=1;
tlv.b_cMsgType=true;
tlv.cMsgType=1;
tlv.b_cNodesCount=true;
tlv.cNodesCount=1;
tlv.b_cPid=true;
tlv.cPid=1;
tlv.b_cPkNumber=true;
tlv.cPkNumber=1;
tlv.b_cPkTotal=true;
tlv.cPkTotal=1;
tlv.b_cSpDealResult=true;
tlv.cSpDealResult=1;
tlv.b_cSpMaskFlag=true;
tlv.cSpMaskFlag=1;
tlv.b_cSrcMaskFlag=true;
tlv.cSrcMaskFlag=1;
tlv.b_cUdhi=true;
tlv.cUdhi=1;
tlv.b_strDestNumberMask=true;
tlv.strDestNumberMask="123";
tlv.b_strMsgSrc=true;
tlv.strMsgSrc="测试TLV";
tlv.b_strFeeNumberMask=true;
tlv.strFeeNumberMask="232";
tlv.b_strLinkId=true;
tlv.strLinkId="";
tlv.b_strSrcNumberMask=true;
tlv.strSrcNumberMask="4333435";
//submit.tsmgpTlv=tlv;
TSMGP_RESP resp=new TSMGP_RESP();
int submit_ret=smgp.SMGP_Submit(socketID, submit, resp);
log.info("发送MT返回值:"+submit_ret +" --- seqid:"+resp.getLSerial_ID());
}
}
smgp.SMGP_Disconnect(socketID);
}
private static String bytes2hex(byte[] b) {
StringBuffer sb = new StringBuffer();
for (int i = 0; i < b.length; i++)
sb.append(Common.byte2hex(b[i]) + " ");
return sb.toString();
}
}
--------------------编程问答-------------------- 楼主,您刷屏啊。。? --------------------编程问答-------------------- lz 还能不能看到啊
我也在搞这个smgp。。
demo 代码:跟你的类似
不过一直返回 -78.搞得我快晕了、。。
->成功建立起和网关的socket连接
[DEBUG] 2011-10-21 18:19:12,216-->FinalDef.CMD_SMGP_LOGIN==1
[DEBUG] 2011-10-21 18:19:12,216-->this.lCommand_ID==1
[INFO ] 2011-10-21 18:19:12,219-->com.sxit.smgp3.TSMGP_LOGIN 消息处理,序列号=1
[DEBUG] 2011-10-21 18:19:12,223-->企业代码:,密码: 35
[DEBUG] 2011-10-21 18:19:12,223-->md5散列码:95 5C 7B 01 4A FE 10 E6 FC 61 72 C8 13 BA 9C 1D
[DEBUG] 2011-10-21 18:19:12,223-->lTotal_Length==42
[DEBUG] 2011-10-21 18:19:12,223-->lCommand_ID==1
[DEBUG] 2011-10-21 18:19:12,223-->lSerial_ID==1
[INFO ] 2011-10-21 18:19:12,223-->com.sxit.smgp3.TSMGP_LOGIN 发送包体成功
[DEBUG] 2011-10-21 18:19:12,534-->输入流长度为:33
[DEBUG] 2011-10-21 18:19:12,534-->返回包长度解析后为:33
[DEBUG] 2011-10-21 18:19:12,535-->返回包命令字解析后=-2147483647,实际=-2147483647
[DEBUG] 2011-10-21 18:19:12,535-->返回包序列号解析后为:1
[INFO ] 2011-10-21 18:19:12,535-->connectResp消息解析成功,status=20,sequenceID=1
[INFO ] 2011-10-21 18:19:12,535-->连接ISMG返回值:20
[DEBUG] 2011-10-21 18:19:12,545-->this.lCommand_ID==2
[INFO ] 2011-10-21 18:19:12,545-->com.sxit.smgp3.TSMGP_SUBMIT 消息处理,序列号=2
[DEBUG] 2011-10-21 18:19:12,545-->TLV 包长度=0
[INFO ] 2011-10-21 18:19:12,545-->接收方:123919994115,业务代码:20006
[DEBUG] 2011-10-21 18:19:12,545-->TLV 包长度=0
[INFO ] 2011-10-21 18:19:12,545-->tlv.length包长度:0
[INFO ] 2011-10-21 18:19:12,545--> 组装包长度:138
[DEBUG] 2011-10-21 18:19:12,545-->lTotal_Length==150
[DEBUG] 2011-10-21 18:19:12,545-->lCommand_ID==2
[DEBUG] 2011-10-21 18:19:12,546-->lSerial_ID==2
[INFO ] 2011-10-21 18:19:12,546-->com.sxit.smgp3.TSMGP_SUBMIT 发送包体成功
[WARN ] 2011-10-21 18:19:22,547-->读取输入流时租塞
[INFO ] 2011-10-21 18:19:22,547-->发送MT返回值:-78 --- seqid:0 msgid=null --------------------编程问答-------------------- 楼主要是看到了,帮帮小弟这个后来者 啊 --------------------编程问答-------------------- 楼上的搞定smpg 短信收发没有啊?
请指教啊
qq:271910941
补充:Java , Java SE