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

📄 conn_resp.java

📁 CMPP3.0移动短信程序java源程序
💻 JAVA
字号:
package com.sxforever.protocol.cmpp30;

import com.sxforever.util.Log;
import com.sxforever.util.CTime;

/**
 * <p>Title: sxforever</p>
 *
 * <p>Description: </p>
 *
 * <p>Copyright: Copyright (c) 2007</p>
 *
 * <p>Company: Hengyuan_COM</p>
 *
 * @author shanying
 * @version 1.0
 */
public class CONN_RESP {
    byte estate;
    public byte[] msg;
    Log info=new Log();
    MyDeliver md = MyDeliver.getInstance();
    public byte[] msgid;
    public static int D_S=1;
    public CONN_RESP() {
    }
    public void conn_msg(){
        conn_msg(msg);
    }
    public void conn_msg(byte[] msg){
        this.msg=msg;
        byte[] msg_head,msg_body;
        int msg_comm;
        //Command_Id cmd=new Command_Id();
        while(this.msg.length>0){
            msg_head = SplitBytes(this.msg, 12);
            msg_body = SplitBytes(this.msg, 12, set_msg_length(msg_head) - 12);
            this.msg=SplitBytes(this.msg,set_msg_length(msg_head),this.msg.length-set_msg_length(msg_head));
            msg_comm = set_command(msg_head);
            switch (msg_comm) {
            case Command_Id.COMMAND_CMPP_CONNECT_RESP:
                info.printEvent(Set_COMMAND_CMPP_CONNECT_RESP(msg_body),"./conf/logs/cmpp.log");
                break;
            case Command_Id.COMMAND_CMPP_TERMINATE_RESP:
                info.printEvent(Set_COMMAND_CMPP_TERMINATE_RESP(msg_body),"./conf/logs/cmpp.log");
                break;
            case Command_Id.COMMAND_CMPP_SUBMIT_RESP:
                info.printEvent(Set_COMMAND_CMPP_SUBMIT_RESP(msg_body),"./conf/logs/cmpp.log");
                break;
            case Command_Id.COMMAND_CMPP_DELIVER:
                md.add(Set_COMMAND_CMPP_DELIVER(msg_head,msg_body));
                info.printEvent("收到一条信息","./conf/logs/cmpp.log");
                break;
            case Command_Id.COMMAND_CMPP_QUERY_RESP:
                info.printEvent(Set_COMMAND_CMPP_QUERY_RESP(msg_body),"./conf/logs/cmpp.log");
                break;
            case Command_Id.COMMAND_CMPP_CANCEL_RESP:
                info.printEvent(Set_COMMAND_CMPP_CANCEL_RESP(msg_body),"./conf/logs/cmpp.log");
                break;
            case Command_Id.COMMAND_CMPP_ACTIVE_TEST_RESP:
                info.printEvent(Set_COMMAND_CMPP_ACTIVE_TEST_RESP(msg_body),"./conf/logs/cmpp.log");
            }
        }
    }
    private String Set_COMMAND_CMPP_CONNECT_RESP(byte[] msg_body){//连接响应处理
        byte[] n=new byte[4];
        for(int i=0;i<4;i++){
            n[i]=msg_body[i];
        }
        switch(TypesTools.byte2int(n)){
        case 0:
            return "连接正确";
        case 1:
            return "消息结构错";
        case 2:
            return "非法源地址";
        case 3:
            return "认证错";
        case 4:
            return "版本太高";
        default:
            return "其它";
        }
    }
    private String Set_COMMAND_CMPP_QUERY_RESP(byte[] msg_body){//查询响应处理
        byte Query_type;
        String info;
        Query_type=msg_body[8];
        if (Query_type==0)
            info="总数查询 \n";
        else
            info="业务查询 \n";
        return info+"从SP接收信息总数为"+TypesTools.byte2int(SplitBytes(msg_body, 18,4))+"从SP接收用户总数"+TypesTools.byte2int(SplitBytes(msg_body, 22,4))+"成功转发"+TypesTools.byte2int(SplitBytes(msg_body, 26,4))+"待转发"+TypesTools.byte2int(SplitBytes(msg_body, 30,4))+"转发失败"+TypesTools.byte2int(SplitBytes(msg_body, 34,4))+"向SP成功送达"+TypesTools.byte2int(SplitBytes(msg_body, 38,4))+"向SP待送达"+TypesTools.byte2int(SplitBytes(msg_body, 42,4))+"向SP送达失败"+TypesTools.byte2int(SplitBytes(msg_body, 46,4));
    }
    private String Set_COMMAND_CMPP_CANCEL_RESP(byte[] msg_body){//删除响应处理
        byte[] n=new byte[4];
        for(int i=0;i<4;i++){
            n[i]=msg_body[i+8];
        }
        switch(TypesTools.byte2int(n)){
        case 0:
            return "消息删除成功";
        default:
            return "消息删除失败";
        }
    }
    private String Set_COMMAND_CMPP_ACTIVE_TEST_RESP(byte[] msg_body){//链路检测响应处理
        return "链路检测";
    }
    private String Set_COMMAND_CMPP_TERMINATE_RESP(byte[] msg_body){//拆除响应处理
        return "拆除正确";
    }
    private MDELIVER Set_COMMAND_CMPP_DELIVER(byte[] msg_head,byte[] msg_body){//接收短信
        byte[] a1={0};
        String a2=new String(a1);
        MDELIVER dlv=new MDELIVER();
        dlv.Seq_ID=SplitBytes(msg_head,8,4);
        dlv.GATETYPE="CM";
        dlv.By_MSGID=SplitBytes(msg_body,8);
        dlv.Str_MSGID=new String(SplitBytes(msg_body,8));
        dlv.Str_SPNUM=(new String(SplitBytes(msg_body,8,21))).replaceAll(a2,"");//Dest_Id
        dlv.Str_SERVICEID=(new String(SplitBytes(msg_body,29,10))).replaceAll(a2,"");//Service_Id
        dlv.By_MSGFMT=SplitByte(msg_body,41);//Msg_Fmt信息格式0asc,3短信写卡,4二进制,8ucs2,15gb汉字
        dlv.Str_USERNUM=(new String(SplitBytes(msg_body,42,32))).replaceAll(a2,"");//Src_terminal_Id
        dlv.By_USERNUMTYPE=SplitByte(msg_body,74);//源终端号码类型,0:真实号码,1:伪码
        dlv.By_ISREPORT=SplitByte(msg_body,75);//是否状态报告,1是,0不是
        dlv.Int_MSGLENGTH=SplitByte(msg_body,76);//消息长度
        dlv.Str_MSG=SplitBytes(msg_body,77,SplitByte(msg_body,76));
        dlv.Str_LINKID=(new String(SplitBytes(msg_body,77+SplitByte(msg_body,76),20))).replaceAll(a2,"");
        dlv.Str_RECVTIME=CTime.getTime(14);
        dlv.Str_D_S=D_S+"";
        D_S++;
        return dlv;
    }
    private String Set_COMMAND_CMPP_SUBMIT_RESP(byte[] msg_body){//短信响应处理
        byte[] n=new byte[4];
        for(int i=0;i<4;i++){
            n[i]=msg_body[i+8];
        }
        switch(TypesTools.byte2int(n)){
        case 0:
            return "消息发送正确";
        case 1:
            return "消息结构错";
        case 2:
            return "命令字错";
        case 3:
            return "消息序号重复";
        case 4:
            return "消息长度错";
        default:
            return "其它";
        }
    }

    private int set_msg_length(byte[] msg_head){
        byte[] n=new byte[4];
        for(int i=0;i<4;i++){
            n[i]=msg_head[i];
        }
        return TypesTools.byte2int(n);
    }
    private int set_command(byte[] msg_head){
        byte[] n=new byte[4];
        for(int i=0;i<4;i++){
            n[i]=msg_head[i+4];
        }
        return TypesTools.byte2int(n);
    }
    private byte SplitByte(byte[] info, int start) {
        return info[start];
    }
    private byte[] SplitBytes(byte[] info, int length) {
        byte[] n = new byte[length];
        for (int i = 0; i < length; i++) {
            n[i] = info[i];
        }
        return n;
    }
    public byte[] SplitBytes(byte[] info, int start, int length) {
        byte[] n = new byte[length];
        for (int i = 0; i < length; i++) {
            n[i] = info[i + start];
        }
        return n;
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -