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

📄 msghead.java

📁 中国联通短信通信协议
💻 JAVA
字号:
package com.wireless.sms.gwif.sgip12;

//import com.wireless.sms.pub.mq.*;

/**
 * <p>Title: WVAS-PLATFORM-SMS</p>
 * <p>Description: 无线增值业务平台-----短信接口机</p>
 * <p>Copyright: Copyright (c) 2003</p>
 * <p>Company: moon</p>
 * @author tech team
 * @version 1.0
 */


abstract class MsgHead{
  private int TotalLen;    // 消息的总长度(字节)
  private int CmdID;       // 命令ID
  private int[] SeqNum;    // 序列号

  public MsgHead(){
    TotalLen = 20;
    SeqNum = new int[3];
  }

  public MsgHead(byte[] ba){
    TotalLen = getUINT4(ba, 0);
    CmdID = getUINT4(ba, 4);
    SeqNum[0] = getUINT4(ba, 8);
    SeqNum[1] = getUINT4(ba, 12);
    SeqNum[2] = getUINT4(ba, 16);
  }

  static public int getCmdID(byte[] ba)
  {
    if (ba.length <= 7) return 0;
    return getUINT4(ba, 4);
  }

  static protected int getUINT4(byte[] ba, int start)
  {
    if (ba.length <= start + 3) return 0;

    int r = 0;
    r |= 0x00FF & ba[start];
    r = r<<8;
    r |= 0x00FF & ba[start + 1];
    r = r<<8;
    r |= 0x00FF & ba[start + 2];
    r = r<<8;
    r |= 0x00FF & ba[start + 3];
    return r;
  }

  static protected void setUINT4(byte[] ba, int start, int value)
  {
    if (ba.length <= start + 3) return;
    ba[start    ] = (byte)(value >> 24 & 0xFF);
    ba[start + 1] = (byte)(value >> 16 & 0xFF);
    ba[start + 2] = (byte)(value >> 8 & 0xFF);
    ba[start + 3] = (byte)(value & 0xFF);
  }

  static protected String byte2str(byte[] ba, int start, int len)
  {
//    if (ba.length <= start + len - 1) return null;
    if (ba.length <= start + len - 1) return "";
    String r = new String();
    for (int i = 0; i < len; i++)
    {
      if (ba[start + i] == '\0') break;
      r += (char)ba[start + i];
    }
    return r;
  }

  static protected void str2byte(byte[] ba, String s, int start, int len)
  {
    if (ba.length <= start + len - 1) return;

    if (s.length() < len)
    {
      for(int i = 0; i < s.length(); i++)
      {
	ba[start + i] = (byte)s.charAt(i);
      }
      for(int i = s.length(); i < len; i++)
      {
	ba[start + i] = 0;
      }
    }
    else
    {
      for(int i = 0; i < len; i++)
      {
	ba[start + i] = (byte)s.charAt(i);
      }
    }
  }

  protected void setHead(byte[] ba){
    TotalLen = getUINT4(ba, 0);
    CmdID = getUINT4(ba, 4);
    SeqNum[0] = getUINT4(ba, 8);
    SeqNum[1] = getUINT4(ba, 12);
    SeqNum[2] = getUINT4(ba, 16);
  }

  protected int headFill(byte[] ba)
  {
    setUINT4(ba, 0, TotalLen);
    setUINT4(ba, 4, CmdID);
    setUINT4(ba, 8, SeqNum[0]);
    setUINT4(ba,12, SeqNum[1]);
    setUINT4(ba,16, SeqNum[2]);
    return 0;
  }

  public byte[] getBytes()
  {
    byte[] ba = new byte[20];
    headFill(ba);
    return ba;
  }

  public void printHead()
  {
    System.out.print("TotalLen=" + TotalLen);
    System.out.print(" CmdID=" + Integer.toHexString(CmdID));
    System.out.print(" SeqNum[0..2]=" + SeqNum[0]);
    System.out.print(", " + SeqNum[1]);
    System.out.print(", " + SeqNum[2]);
    System.out.print("\n");
  }

  public String toString()
  {
    String str = " TotalLen  =" + TotalLen + "\n" +
                 " CmdID     =" + Integer.toHexString(CmdID) + "\n" +
                 " SeqNum[0] =" + SeqNum[0] + "\n" +
                 " SeqNum[1] =" + SeqNum[1] + "\n" +
                 " SeqNum[2] =" + SeqNum[2];
    return str;
  }

  public int[] getSeqNum() {
    return SeqNum;
  }

  public void setSeqNum(int[] SeqNum) {
    this.SeqNum = SeqNum;
  }
  public int getTotalLen() {
    return TotalLen;
  }
  public void setTotalLen(int TotalLen) {
    this.TotalLen = TotalLen;
  }
  public int getCmdID() {
    return CmdID;
  }
  public void setCmdID(int CmdID) {
    this.CmdID = CmdID;
  }
}

⌨️ 快捷键说明

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