📄 xsms.java~22~
字号:
}catch(NullPointerException ex){
throw ex;
}
if(pack.pk_head.command_id != xsmsE_ESME_QRYLINK)
break;
xsms_send_active_resp(conn, pack.pk_head.sequence_no);
} while(true);
switch(pack.pk_head.command_id)
{
case -2147483647:
xsmse_login_result cl = new xsmse_login_result();
cl.pack_id = 0x80000001;
cl.stat = pack.pk_head.command_status;
cl.system_id = (ParseXml.getElement("system_id").trim());
return cl;
case -2147483646:
cr.pack_id = 0x80000002;
cr.stat = pack.pk_head.command_status;
return cr;
case -2147483644:
xsmse_submit_result sr = new xsmse_submit_result();
sr.pack_id = 0x80000004;
sr.seq = pack.pk_head.sequence_no;
sr.stat = pack.pk_head.command_status;
sr.message_id = (ParseXml.getElement("message_id").trim());
return sr;
case 5:
xsmse_deliver_result cd = new xsmse_deliver_result();
cd.pack_id = 5;
int stat = pack.pk_head.command_status;
cd.seq = pack.pk_head.sequence_no;
try
{
if(ParseXml.getElement("media_type")!=null)
cd.media_type = ParseXml.getElement("media_type").trim();
if(ParseXml.getElement("service_type")!=null)
cd.service_type = ParseXml.getElement("service_type").trim();
if(ParseXml.getElement("source_address")!=null)
cd.source_address = ParseXml.getElement("source_address").trim();
if(ParseXml.getElement("destination_address")!=null)
cd.destination_address = ParseXml.getElement("destination_address").trim();
if(ParseXml.getElement("esm_class")!=null)
cd.esm_class = Byte.parseByte(ParseXml.getElement("esm_class").trim());
System.out.println("protocol_IDprotocol_IDprotocol_IDprotocol_IDprotocol_ID"+ParseXml.getElement("protocol_ID"));
if(ParseXml.getElement("protocol_ID")!=null)
cd.protocol_ID = Byte.parseByte(ParseXml.getElement("protocol_ID").trim());
if(ParseXml.getElement("priority_flag")!=null)
cd.priority_flag = Byte.parseByte(ParseXml.getElement("priority_flag").trim());
if(ParseXml.getElement("schedule_delivery_time")!=null)
cd.schedule_delivery_time = ParseXml.getElement("schedule_delivery_time").trim();
if(ParseXml.getElement("validity_peroid")!=null)
cd.validity_peroid = ParseXml.getElement("validity_peroid").trim();
if(ParseXml.getElement("registered_delivery_flag")!=null)
cd.registered_delivery_flag = Byte.parseByte(ParseXml.getElement("registered_delivery_flag").trim());
if(ParseXml.getElement("replace_if_present_flag")!=null)
cd.replace_if_present_flag = Byte.parseByte(ParseXml.getElement("replace_if_present_flag").trim());
if(ParseXml.getElement("data_coding")!=null)
cd.data_coding = Byte.parseByte(ParseXml.getElement("data_coding").trim());
if(ParseXml.getElement("sm_default_msg_id")!=null)
cd.media_type = ParseXml.getElement("sm_default_msg_id").trim();
if(ParseXml.getElement("sm_length")!=null)
cd.sm_length = Integer.parseInt(ParseXml.getElement("sm_length").trim());
if(ParseXml.getElement("short_message_text")!=null)
cd.short_message_text = ParseXml.getElement("short_message_text").trim();
stat = 0;
}
catch(Exception _ex)
{
DeliverFailException de = new DeliverFailException();
throw de;
}
cd.stat = stat;
return cd;
case -2147483645:
xsmse_query_result qr = new xsmse_query_result();
qr.pack_id = 0x80000003;
qr.seq = pack.pk_head.sequence_no;
qr.stat = pack.pk_head.command_status;
if(ParseXml.getElement("message_id")!=null)
qr.message_id = ParseXml.getElement("message_id").trim();
if(ParseXml.getElement("final_date")!=null)
qr.final_date = ParseXml.getElement("final_date").trim();
if(ParseXml.getElement("message_status")!=null)
qr.message_status = ParseXml.getElement("message_status").trim();
if(ParseXml.getElement("gsm_code")!=null)
qr.gsm_code = ParseXml.getElement("gsm_code").trim();
return qr;
case -2147483640:
cr.stat = pack.pk_head.command_status;
cr.pack_id = 0x80000008;
return cr;
case -2147483627:
cr.stat = pack.pk_head.command_status;
cr.pack_id = 0x80000015;
return cr;
}
UnknownPackException un = new UnknownPackException();
throw un;
}
public void xsms_send_deliver_resp(conn_desc conn, int seq, int stat, String media_type, String source_address, String destination_address)
throws IOException,OutOfBoundsException
{
xsmse_head ch = new xsmse_head();
String sendXML = "";
xsmse_deliver_resp deliver_resp = new xsmse_deliver_resp();
OutputStream out = null;
OutOfBoundsException e = new OutOfBoundsException();
try
{
synchronized (lockObject)
{
out = (conn.sock.getOutputStream());
ch.command_id = xsmsE_ESME_DELIVER_SM_RESP;
ch.command_status = 0;
ch.sequence_no = seq;
sendXML = getSendHeader(ch);
if(media_type.length()>50)
throw e;
if(source_address.length()>21)
throw e;
if(destination_address.length()>21)
throw e;
sendXML = sendXML+deliver_resp.getDeliverRespBodyXML(media_type,source_address,destination_address);
out.write(sendXML.getBytes());
out.flush();
out = null;
}
}
catch(IOException e1)
{
out = null;
throw e1;
}
}
protected void xsms_send_active_resp(conn_desc conn, int seq)
throws IOException
{
xsmse_head ch = new xsmse_head();
try
{
ch.command_id = xsmsE_ESME_QRYLINK_RESP;
ch.command_status = 0;
ch.sequence_no = seq;
sendHeader(ch,conn);
}
catch(IOException e)
{
throw e;
}
}
protected void xsms_deliver_test_ask(conn_desc conn)
throws IOException
{
xsmse_head ch = new xsmse_head();
try
{
ch.command_id = 44;
ch.command_status = 0;
ch.sequence_no = conn.seq;
sendHeader(ch,conn);
conn.seq++;
if(conn.seq == 0x7fffffff)
conn.seq = 1;
}
catch(IOException e)
{
throw e;
}
}
public void xsms_logout(conn_desc conn)
throws IOException
{
xsmse_head ch = new xsmse_head();
try
{
ch.command_id = xsmsE_ESME_UBD;
ch.command_status = 0;
ch.sequence_no = conn.seq;
sendHeader(ch,conn);
conn.seq++;
if(conn.seq == 0x7fffffff)
conn.seq = 1;
xsms_disconnect_from_ismg(conn);
}
catch(IOException e)
{
throw e;
}
}
// protected void parseMsgContent(xsmse_deliver_result dr)
// {
// int i = 0;
// int j = 0;
// byte status[] = new byte[4];
// for(; dr.short_msg[i] != 9; i++)
// dr.msg_id[i] = dr.short_msg[i];
//
// dr.msg_id[i] = 0;
// i++;
// j = 0;
// for(status[0] = 9; dr.short_msg[i] != 9;)
// if(dr.short_msg[i] == 48 && j == 0)
// {
// i++;
// } else
// {
// status[j] = dr.short_msg[i];
// i++;
// j++;
// }
//
// if(status[0] == 9)
// {
// status[0] = 48;
// status[1] = 0;
// } else
// {
// status[j] = 0;
// }
// String stat = new String(status);
// stat = stat.trim();
// dr.status_from_rpt = Integer.parseInt(stat);
// i++;
// for(j = 0; dr.short_msg[i] != 9; j++)
// {
// dr.submit_time[j] = dr.short_msg[i];
// i++;
// }
//
// dr.submit_time[j] = 0;
// i++;
// for(j = 0; dr.short_msg[i] != 0; j++)
// {
// dr.done_time[j] = dr.short_msg[i];
// i++;
// }
//
// dr.done_time[j] = 0;
// for(i = 0; i < 161; i++)
// dr.short_msg[i] = 0;
//
// }
// protected int getDeliverStat(DataInputStream in, xsmse_deliver_result cd, int validlen)
// throws IOException
// {
// int len = 16;
// try
// {
// int len1 = read_unknowncount_byte(in, cd.src_addr);
// if(len1 == 1)
// return 38;
// switch(testDigitString(cd.src_addr, 20))
// {
// case -1:
// return 5;
//
// case -2:
// return 38;
// }
// len += len1;
// len1 = read_unknowncount_byte(in, cd.dst_addr);
// if(len1 != 1)
// switch(testDigitString(cd.dst_addr, 20))
// {
// case -1:
// return 5;
//
// case -2:
// return 38;
// }
// len += len1;
// len1 = read_unknowncount_byte(in, cd.svc_type);
// if(len1 != 1 && testDigitString(cd.svc_type, 10) != 1)
// return 5;
// len += len1;
// cd.proto_id = in.readByte();
// cd.status_rpt = in.readByte();
// cd.priority = in.readByte();
// if(cd.priority > 9)
// return 39;
// cd.data_coding = in.readByte();
// cd.sm_len = in.readByte();
// int templen = cd.sm_len & 0xff;
// len += 5;
// if(templen > 160)
// return 37;
// len += templen;
// if(++len != validlen)
// return 5;
// read_count_byte(in, cd.short_msg, templen + 1);
// if(cd.status_rpt == 1)
// parseMsgContent(cd);
// }
// catch(IOException e)
// {
// throw e;
// }
// return 0;
// }
/*
public int xsms_deliver(conn_desc conn, xsmse_deliver_result rs)
{
int stat = 0;
DataOutputStream out = null;
DataInputStream in = null;
xsmse_head ch = new xsmse_head();
new xsmse_pack();
int status = 0;
xsmse_head resp_ch = new xsmse_head();
try
{
out = new DataOutputStream(conn.sock.getOutputStream());
in = new DataInputStream(conn.sock.getInputStream());
ch.pk_len = in.readInt();
ch.pk_cmd = in.readInt();
}
catch(Exception _ex)
{
ch.pk_len = 16;
ch.pk_cmd = 0x80000000;
ch.pk_stat = 0;
ch.pk_seq = conn.seq;
try
{
sendHeader(ch, out);
}
catch(Exception _ex2)
{
return 2009;
}
rs = null;
return 2009;
}
try
{
ch.pk_stat = in.readInt();
ch.pk_seq = in.readInt();
stat = getDeliverStat(in, rs, ch.pk_len);
if(stat == -1)
{
in = null;
out = null;
return 2009;
}
resp_ch.pk_stat = 0;
if(stat != 0)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -