📄 conn_resp.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 + -