⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cmpp_dr.java

📁 短信
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
                    		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 + -