📄 cmpp_dr.java
字号:
SmsLoadSvc.saveRecMessage(dm.sSrcTerminalId, dm.sMsgContent, this.moduleid);
}
checkTime=(int)0;
hasDeliver = true;
continue;
}
if(back.stat==this.DELIVER_MSG_TIME_OUT){//超时
System.out.println("DELIVER_MSG_TIME_OUT");
throw new IOException();
}
if(back.nCommandID==this.COMMAND_CMPP_ACTIVE_TEST_REP){//返回测试相应包
if(!hasDeliver){
checkTime=(int)(System.currentTimeMillis()/1000);
}
break;
}
}
}
catch (IOException ex) {
System.out.println(ex.getMessage());
return false;
}
return true;
}
return true;
}
public boolean activeTest()throws IOException{
return activeTest(null);
}
private int getDeliverMessage(CMPPDeliverMessage msg,byte[] content)throws Exception{
if(msg==null)
return DELIVER_MSG_NULL_ERROR;
int stat=CMPP_SUCCESS;
//把content解析成所需信息
byte sDestTermID[] = new byte[21];
byte sServiceID[] = new byte[10];
byte cTpPid=0;
byte cTpUdhi=0;
byte nMsgFormat=0;
byte sSrcTermID[] = new byte[21];
byte nIsReply=0;
byte nMsgLen=0;
byte sMsgContent[]=null;
try {
int length = content.length;
int i=0;
for(;i<length;i++){
if(content[i]==0){
break;
}
}
System.arraycopy(content,0,sSrcTermID,0,i+1);
byte[] msgs=new byte[length];
System.arraycopy(content,i+1,msgs,0,length-i-1);
content=msgs;
i=0;
length=content.length;
for(;i<length;i++){
if(content[i]==0){
break;
}
}
System.arraycopy(content,0,sDestTermID,0,i+1);
msgs=new byte[length];
System.arraycopy(content,i+1,msgs,0,length-i-1);
content=msgs;
i=0;
length=content.length;
for(;i<length;i++){
if(content[i]==0){
break;
}
}
System.arraycopy(content,0,sServiceID,0,i+1);
msgs=new byte[length];
System.arraycopy(content,i+1,msgs,0,length-i-1);
content=msgs;
cTpPid=content[0];
nIsReply=content[1];
cTpUdhi=content[2];
nMsgFormat=content[3];
nMsgLen=content[4];
if(nMsgLen<0)
nMsgLen+=256;
sMsgContent= new byte[nMsgLen];
System.arraycopy(content,5,sMsgContent,0,nMsgLen);
}
catch (Exception ex) {
return DELIVER_MSG_FORMAT_ERROR;
}
/////////////////////////////////////////封装正常消息
msg.nIsDelivery=nIsReply;
msg.nMsgFormat=nMsgFormat;
msg.nMsgLength=nMsgLen;
msg.nTPpid=cTpPid;//协议标识
msg.nTPudhi=cTpUdhi;//优先级别
msg.sDestId=new String(sDestTermID).trim();
msg.sServiceId=new String(sServiceID).trim();
msg.sSrcTerminalId=new String(sSrcTermID).trim();
try {
if(nIsReply==0){
if(nMsgFormat == 8){//ucs2编码格式
msg.sMsgContent = new String(sMsgContent,"iso-10646-ucs-2");
}else{
msg.sMsgContent=new String(sMsgContent,"gb2312");
}
}
}
catch (Exception ex) {
return DELIVER_MSG_FORMAT_DECODE_ERROR;
}
/////////////////////////////状态报告中所需字段
if(nIsReply==1){
try {
//byte[] msgID = new byte[8];
//byte[] sStat = new byte[3];
//byte[] sSubmitTime = new byte[12];
//byte[] sDoneTime = new byte[12];
int length = sMsgContent.length;
int i=0;
for(;i<length;i++){
if(sMsgContent[i]==9){
break;
}
}
byte[] msgID = new byte[i];
System.arraycopy(sMsgContent,0,msgID,0,i);
byte[] msgs=new byte[length-i-1];
System.arraycopy(sMsgContent,i+1,msgs,0,length-i-1);
sMsgContent=msgs;
i=0;
length=sMsgContent.length;
for(;i<length;i++){
if(sMsgContent[i]==9){
break;
}
}
byte[] sStat = new byte[i];
System.arraycopy(sMsgContent,0,sStat,0,i);
msgs=new byte[length-i-1];
System.arraycopy(sMsgContent,i+1,msgs,0,length-i-1);
sMsgContent=msgs;
i=0;
length=sMsgContent.length;
for(;i<length;i++){
if(sMsgContent[i]==9){
break;
}
}
byte[] sSubmitTime = new byte[i];
System.arraycopy(sMsgContent,0,sSubmitTime,0,i);
msgs=new byte[length-i-1];
System.arraycopy(sMsgContent,i+1,msgs,0,length-i-1);
sMsgContent=msgs;
i=0;
length=sMsgContent.length;
for(;i<length;i++){
if(sMsgContent[i]==9){
break;
}
}
byte[] sDoneTime = new byte[i];
System.arraycopy(sMsgContent,0,sDoneTime,0,i);
msg.setReportMsgId(msgID);
msg.sStat=new String(sStat).trim();
msg.sStat=String.valueOf(Integer.parseInt(msg.sStat));
msg.sSubmitTime=new String(sSubmitTime).trim();
msg.sDoneTime=new String(sDoneTime).trim();
}
catch (Exception ex) {
stat=DELIVER_MSG_FORMAT_REPORT_ERROR;
}
}
return stat;
}
private void sendHead(CMPPHead head)throws IOException{
byte[] send = new byte[16];
System.arraycopy(Tools.int2byte(head.nMsgSize),0,send,0,4);
System.arraycopy(Tools.int2byte(head.nCommandID),0,send,4,4);
System.arraycopy(Tools.int2byte(head.nSequenceID),0,send,12,4);
send(send);
}
private void sendPacket(CMPPHead head,byte[] msg)throws IOException{
byte[] send = new byte[16+msg.length];
head.nMsgSize=16+msg.length;
System.arraycopy(Tools.int2byte(head.nMsgSize),0,send,0,4);
System.arraycopy(Tools.int2byte(head.nCommandID),0,send,4,4);
System.arraycopy(Tools.int2byte(head.nSequenceID),0,send,12,4);
System.arraycopy(msg,0,send,16,msg.length);
send(send);
}
private void send(byte[] msg)throws IOException{
DataOutputStream out = creatOutputStream();
out.write(msg);
out.flush();
}
private byte[] read(CMPPHead head)throws InterruptedIOException,IOException{
DataInputStream in =creatInputStream();
head.nMsgSize=in.readInt();
head.nCommandID=in.readInt();
head.stat=in.readInt();
head.nSequenceID=in.readInt();
byte[] resp = null;
if(head.nMsgSize<=16){
return null;
}else{
resp=new byte[head.nMsgSize-16];
in.read(resp,0,head.nMsgSize-16);
}
return resp;
}
private DataInputStream creatInputStream()throws IOException{
return new DataInputStream(s.getInputStream());
}
private DataOutputStream creatOutputStream()throws IOException{
return new DataOutputStream(s.getOutputStream());
}
private void close(){
socketManger.freeSocket();
s=null;
}
private static final int CMPP_SUCCESS=0;
private static final int CMPP_UNKNOWN_PACKAGE_ERROR=-9;
private static final int CMPP_LOGOUT_HAPPEND=-2;
private static final int SUBMIT_MSG_NULL_ERROR=-4;
private static final int SUBMIT_MSG_FORMAT_ERROR=-5;
private static final int SUBMIT_MSG_TIME_OUT=-6;
private static final int DELIVER_MSG_FORMAT_REPORT_ERROR=-7;
private static final int DELIVER_MSG_NULL_ERROR=-8;
private static final int DELIVER_MSG_TIME_OUT=-9;
private static final int DELIVER_MSG_FORMAT_ERROR=-10;
private static final int DELIVER_MSG_FORMAT_DECODE_ERROR=-11;
private static final int CONNECT_MSG_NULL_ERROR=-12;
private static final int CONNECT_MSG_RESP_NOT_FOUNT_ERROR=-13;
private static final int CONNECT_MSG_FORMAT_ERROR=-14;
private static final int CONNECT_INIT_ERROR=-15;
private static final int CONNECT_HEAD_LEN = 12;
private static final int CONNECT_PACKET_LEN = 27;
private static final int QUERY_PACKET_LEN = 27;
private static final int COMMAND_CMPP_SUBMIT = 4;
private static final int COMMAND_CMPP_QUERY = 6;
private static final int COMMAND_CMPP_TERMINATE = 2;
private static final int COMMAND_CMPP_TERMINATE_RESP = 0x80000002;
private static final int COMMAND_CMPP_QUERY_RESP = 0x80000006;
private static final int COMMAND_CMPP_SUBMIT_RESP = 0x80000004;
private static final int COMMAND_CMPP_CONNECT = 1;
private static final int COMMAND_CMPP_CONNECT_RESP = 0x80000001;
private static final int COMMAND_CMPP_ACTIVE_TEST = 8;
private static final int COMMAND_CMPP_ACTIVE_TEST_REP = 0x80000008;
private static final int COMMAND_CMPP_DELIVER = 5;
private static final int COMMAND_CMPP_NACK_RESP = 0x80000000;
private static final int COMMAND_CMPP_DELIVER_RESP = 0x80000005;
private static final int COMMAND_CMPP_SET_KEY = 4098;
private static final int COMMAND_CMPP_SET_KEY_RESP = 0x80001002;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -