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

📄 cmpp3deliver.java

📁 java支持的短信平台
💻 JAVA
字号:
package com.khan.sms.cmpp3;

import com.khan.sms.MsgID;
import java.io.UnsupportedEncodingException;
import com.khan.util.SocketCommon;

/**
 * <p>Title: </p>
 *
 * <p>Description: </p>
 *
 * <p>Copyright: Copyright (c) 2006</p>
 *
 * <p>Company: </p>
 *
 * @author not attributable
 * @version 1.0
 */
public class Cmpp3Deliver extends Cmpp3Data {
  public MsgID Msg_ID = null;
  public String Dest_ID = "";
  public String Service_ID = "";
  public byte Tp_PID = 0x00;
  public byte Tp_UDHI = 0x00;
  public byte Msg_FMT = 0x00;
  public String Src_Terminal = "";
  public byte Src_Terminal_Type = 0x00;
  public byte IsReport = 0x00;
  public byte Msg_Length = 0x00;
  public String Msg_Content = "";
  public Registered_Delivery Statu_Report = null;
  public byte[] LinkID = null;


  public Cmpp3Deliver(byte[] data) {
    if (data.length < 12) {
      throw new ExceptionInInitializerError("数据包长度小于12字节,包错误!");
    }
    int ioffset = 0;
    TotalLen = SocketCommon.getDWord(data, ioffset);

    if (data.length < 12) {
      throw new ExceptionInInitializerError("数据包头Total_Len字段标示长度小于12字节,包头错误!");
    }

    ioffset += 4;
    CommandID = SocketCommon.getDWord(data, ioffset);
    ioffset += 4;
    SeqID = SocketCommon.getDWord(data, ioffset);
    ioffset += 4;

    Data = new byte[TotalLen - ioffset];
    System.arraycopy(data, ioffset, Data, 0, TotalLen - ioffset);
    //MsgID.PrintDataHex(data);
    //MsgID.PrintDataHex(Data);
  }

  /**
   * decodeCmpp
   *
   * @return Cmpp3Data
   * @todo Implement this com.khan.sms.cmpp3.Cmpp3Data method
   */
  public Cmpp3Data decodeCmpp() {
    int ioffset = 0;
    byte[] tmp = new byte[8];
    System.arraycopy(Data, ioffset, tmp, 0, tmp.length);
    ioffset += tmp.length;
    Msg_ID = new MsgID(tmp);

    tmp = new byte[21];
    System.arraycopy(Data, ioffset, tmp, 0, tmp.length);
    ioffset += tmp.length;
    //MsgID.PrintDataHex(tmp);
    Dest_ID = new String(tmp).trim();
    if (Dest_ID.indexOf(0x00) > -1) {
      Dest_ID = Dest_ID.substring(0, Dest_ID.indexOf(0x00));
    }

    tmp = new byte[10];
    System.arraycopy(Data, ioffset, tmp, 0, tmp.length);
    ioffset += tmp.length;
    Service_ID = new String(tmp).trim();
    if (Service_ID.indexOf(0x00) > -1) {
      Service_ID = Service_ID.substring(0, Service_ID.indexOf(0x00));
    }

    Tp_PID = Data[ioffset++];
    Tp_UDHI = Data[ioffset++];
    Msg_FMT = Data[ioffset++];

    tmp = new byte[32];
    System.arraycopy(Data, ioffset, tmp, 0, tmp.length);
    ioffset += tmp.length;
    Src_Terminal = new String(tmp).trim();
    if (Src_Terminal.indexOf(0x00) > -1) {
      Src_Terminal = Src_Terminal.substring(0, Src_Terminal.indexOf(0x00));
    }
    Src_Terminal_Type = Data[ioffset++];
    IsReport = Data[ioffset++];
    Msg_Length = Data[ioffset++];

    tmp = new byte[Msg_Length];
    System.arraycopy(Data, ioffset, tmp, 0, tmp.length);
    ioffset += tmp.length;

    switch (IsReport) {
    case 0x00: { //非状态报告
      try {
        switch (Msg_FMT) {
        case 8:
          Msg_Content = new String(tmp, "unicodebigunmarked").trim();
          break;
        case 15:
          Msg_Content = new String(tmp, "GB2312").trim();
          break;
        default:
          Msg_Content = new String(tmp).trim();
          break;
        }
      } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
      }
      if (Msg_Content.indexOf(0x00) > -1) {
        Msg_Content = Msg_Content.substring(0, Msg_Content.indexOf(0x00));
      }
    }
    break;
    case 0x01:
      Statu_Report = new Registered_Delivery(tmp); //状态报告
      break;
    default:
      break;
    }

    LinkID = new byte[20];
    if (ioffset + 8 <= Data.length) {
      ;
    }
    System.arraycopy(Data, ioffset, LinkID, 0, LinkID.length);
    ioffset += 20;

    return this;
  }

  /**
   * encodeCmpp
   *
   * @return byte[]
   * @todo Implement this com.khan.sms.cmpp3.Cmpp3Data method
   */
  public byte[] encodeCmpp() {
    return null;
  }

  public String toString() {
    return "CMPP3_DELIVER:seqID=" + getSeqID()
      + ",Msg_ID=" + Msg_ID
      + ",Dest_ID=" + Dest_ID
      + ",Service_ID=" + Service_ID
      + ",Tp_PID=" + Tp_PID
      + ",Tp_UDHI=" + Tp_UDHI
      + ",Msg_FMT=" + Msg_FMT
      + ",Src_Terminal=" + Src_Terminal
      + ",IsReport=" + IsReport
      + ",Msg_Length=" + Msg_Length
      + ",Msg_Content=" + (IsReport == 0x00 ? Msg_Content : Statu_Report)
      + ",LinkID=" + new String(LinkID);
  }
}

⌨️ 快捷键说明

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