?? sgip_command.java
字號:
package spApi;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
public class SGIP_Command {
protected byte[] bodybytes;
protected MsgHead head;
protected int TotalLength = 0;
protected static Seq seq = null;
public static final int LEN_SGIP_HEADER = 20;
public static final int LEN_SGIP_BIND = 41;
public static final int LEN_SGIP_BIND_RESP = 9;
public static final int LEN_SGIP_UNBIND = 0;
public static final int LEN_SGIP_UNBIND_RESP = 0;
public static final int LEN_SGIP_SUBMIT = 123;
public static final int LEN_SGIP_SUBMIT_RESP = 9;
public static final int LEN_SGIP_DELIVER = 57;
public static final int LEN_SGIP_DELIVER_RESP = 9;
public static final int LEN_SGIP_REPORT = 44;
public static final int LEN_SGIP_REPORT_RESP = 9;
public static final int LEN_SGIP_USERRPT = 51;
public static final int LEN_SGIP_USERRPT_RESP = 9;
public static final int LEN_SGIP_TRACE = 41;
public static final int LEN_SGIP_TRACE_RESP = 48;
public static final int LEN_MAX_CONTENT = 160;
public static final int TIMEOUT = 60000;
public static final int SUBMIT_OK = 0;// 無錯誤命令正常接受
public static final int SUBMIT_ERROR_STRUCTURE = 1;// 非法登錄,如登錄名、口令出錯、登錄名與口令不符等。
public static final int SUBMIT_ERROR_COMMANDTYPE = 2;// 重復登錄,如在同一TCP/IP連接中連續兩次以上請求登錄。
public static final int SUBMIT_ERROR_SEQ_DUPLICATE = 3;// 連接過多,指單個節點要求同時建立的連接數過多。
public static final int SUBMIT_ERROR_MSG_LENGTH = 4;// 登錄類型錯,指bind命令中的logintype字段出錯。
public static final int SUBMIT_ERROR_FEECODE = 5;// 參數格式錯,指命令中參數值與參數類型不符或與協議規定的范圍不符。
public static final int SUBMIT_ERROR_CONTENT_LENGTH_EXCEED = 6;// 非法手機號碼,協議中所有手機號碼字段出現非86130號碼或手機號碼前未加“86”時都應報錯。
public static final int SUBMIT_ERROR_SERVERID = 7;
public static final int SUBMIT_ERROR_FLOW_CONTROL = 8;
public static final int SUBMIT_ERROR_OTHERS = 9;
public static final int ID_SGIP_BIND = 1;
public static final int ID_SGIP_BIND_RESP = -2147483647;
public static final int ID_SGIP_UNBIND = 2;
public static final int ID_SGIP_UNBIND_RESP = -2147483646;
public static final int ID_SGIP_SUBMIT = 3;
public static final int ID_SGIP_SUBMIT_RESP = -2147483645;
public static final int ID_SGIP_DELIVER = 4;
public static final int ID_SGIP_DELIVER_RESP = -2147483644;
public static final int ID_SGIP_REPORT = 5;
public static final int ID_SGIP_REPORT_RESP = -2147483643;
public static final int ID_SGIP_USERRPT = 17;
public static final int ID_SGIP_USERRPT_RESP = -2147483631;
public static final int ID_SGIP_TRACE = 4096;
public static final int ID_SGIP_TRACE_RESP = -2147479552;
public static final int MSG_TYPE_ASCII = 0;
public static final int MSG_TYPE_WRITECARD = 3;
public static final int MSG_TYPE_BINARY = 4;
public static final int MSG_TYPE_UCS2 = 8;
public static final int MSG_TYPE_CHINESE = 15;
public static final int READ_SGIP_INVALID = 0;
public static final int READ_SGIP_DELIVER = 1;
public static final int READ_SGIP_REPORT = 2;
public static final int READ_SGIP_USERRPT = 3;
public static final int READ_SGIP_UNBIND = 4;
public SGIP_Command() {
head = new MsgHead();
if (seq == null)
seq = new Seq();
}
public SGIP_Command(long paramLong)// paramLong公司編碼
{
head = new MsgHead();
if (seq == null)
seq = new Seq();
seq.setNodeId(paramLong);
}
public SGIP_Command(MsgHead paramMsgHead) {
this.head = paramMsgHead;
if (seq == null)
seq = new Seq();
}
public SGIP_Command(SGIP_Command paramSGIP_Command) {
head = paramSGIP_Command.head;
bodybytes = paramSGIP_Command.bodybytes;
TotalLength = paramSGIP_Command.TotalLength;
seq = seq;
}
public SGIP_Command(long paramLong, int paramInt1, int paramInt2,
int paramInt3, int paramInt4) {
if (seq == null) {
seq = new Seq(paramInt1, paramInt2);
}
seq.setNodeId(paramLong);
this.TotalLength = (20 + paramInt3);
this.head = new MsgHead();
this.head.setTotalLength(this.TotalLength);
this.head.setCommandID(paramInt4);
this.head.setSeq_1(seq.getGlobalSeq_1());
this.head.setSeq_2(seq.getGlobalSeq_2());
this.head.setSeq_3(seq.getGlobalSeq_3());
this.bodybytes = new byte[paramInt3];
}
public SGIP_Command(MsgHead paramMsgHead, int paramInt1, int paramInt2) {
if (seq == null) {
seq = new Seq();
}
this.TotalLength = (20 + paramInt1);
this.head = new MsgHead();
this.head.setTotalLength(this.TotalLength);
this.head.setCommandID(paramInt2);
this.head.setSeq_1(paramMsgHead.getSeq_1());
this.head.setSeq_2(paramMsgHead.getSeq_2());
this.head.setSeq_3(paramMsgHead.getSeq_3());
this.bodybytes = new byte[paramInt1];
}
public SGIP_Command(long paramLong, int paramInt1, int paramInt2) {
if (seq == null)
seq = new Seq();
seq.setNodeId(paramLong);
this.TotalLength = (20 + paramInt1);
this.head = new MsgHead();
this.head.setTotalLength(this.TotalLength);
this.head.setCommandID(paramInt2);
this.head.setSeq_1(seq.getGlobalSeq_1());
this.head.setSeq_2(seq.getGlobalSeq_2());
this.head.setSeq_3(seq.getGlobalSeq_3());
this.bodybytes = new byte[paramInt1];
}
public SGIP_Command(int paramInt1, int paramInt2) {
if (seq == null) {
seq = new Seq();
}
this.TotalLength = (20 + paramInt1);
this.head = new MsgHead();
this.head.setTotalLength(this.TotalLength);
this.head.setCommandID(paramInt2);
this.head.setSeq_1(seq.getGlobalSeq_1());
this.head.setSeq_2(seq.getGlobalSeq_2());
this.head.setSeq_3(seq.getGlobalSeq_3());
this.bodybytes = new byte[paramInt1];
}
public int write(OutputStream paramOutputStream) {
byte[] arrayOfByte;
try {
arrayOfByte = new byte[this.TotalLength];
synchronized (Seq.seqclass) {
Seq.computeSequence();
this.head.setSeq_2(seq.getGlobalSeq_2());
this.head.setSeq_3(seq.getGlobalSeq_3());
}
BytesCopy(this.head.Head, arrayOfByte, 0, 19, 0);
BytesCopy(this.bodybytes, arrayOfByte, 0, TotalLength - 20 - 1, 20);
// System.out.println("bobybytes1----->"+head.Head[2]);
// System.out.println("bobybytes2----->"+bodybytes[2]);
// System.out.println("bobybytes3------>"+bodybytes[3]);
// System.out.println("bobybytes4------>"+bodybytes[4]);
// System.out.println(arrayOfByte.equals(arrayOfByte));
paramOutputStream.write(arrayOfByte);
System.out.println("<><><><><><><><>"+TotalLength+"<><><><><><><><><><>"+"\n");
return 0;
} catch (Exception localException) {
System.out.println(localException.toString());
}
return -1;
}
public SGIP_Command read(InputStream paramInputStream) throws IOException,
Exception {
head.read(paramInputStream);
readdataintobody(paramInputStream);
System.out.println("CommandID="+head.getCommandID());
switch (head.getCommandID()) {
case -2147483645:
return new SubmitResp(this);
case 4:
return new Deliver(this);
case -2147483644:
return new DeliverResp(this);
case 1:
return new Bind(this);
case -2147483647:
return new BindResp(this);
case 2:
return new Unbind(this);
case 3:
return new Submit(this);
case -2147483646:
return new UnbindResp(this);
case 5:
return new Report(this);
case -2147479552:
return new TraceResp(this);
case 17:
return new Userrpt(this);
}
return null;
}
private void readdataintobody(InputStream paramInputStream)
throws IOException, Exception {
TotalLength = head.getTotalLength();
bodybytes = new byte[this.TotalLength - 20];
paramInputStream.read(bodybytes);
}
public int getTotalLength() {
return this.head.getTotalLength();
}
public long getSeqno_1() {
return this.head.getSeq_1();
}
public int getSeqno_2() {
return this.head.getSeq_2();
}
public int getSeqno_3() {
return this.head.getSeq_3();
}
public MsgHead getMsgHead() {
return this.head;
}
public void setSeqno_1(long paramLong) {
this.head.setSeq_1(paramLong);
}
public int getCommandID() {
return this.head.getCommandID();
}
protected static int ByteToInt(byte paramByte) {
return paramByte;
}
protected static byte IntToByte(int paramInt) {
return (byte) paramInt;
}
protected static int BytesToInt(byte[] paramArrayOfByte) {
return (((0xFF & paramArrayOfByte[0]) << 8) + paramArrayOfByte[1]);
}
protected static byte[] IntToBytes(int paramInt) {
byte[] arrayOfByte = new byte[2];
arrayOfByte[1] = (byte) (0xFF & paramInt);
arrayOfByte[0] = (byte) ((0xFF00 & paramInt) >> 8);
return arrayOfByte;
}
protected static byte[] IntToBytes4(int paramInt) {
byte[] arrayOfByte = new byte[4];
arrayOfByte[3] = (byte) (0xFF & paramInt);
arrayOfByte[2] = (byte) ((0xFF00 & paramInt) >> 8);
arrayOfByte[1] = (byte) ((0xFF0000 & paramInt) >> 16);
arrayOfByte[0] = (byte) ((0xFF000000 & paramInt) >> 24);
return arrayOfByte;
}
protected static byte[] LongToBytes4(long paramLong) {
byte[] arrayOfByte = new byte[4];
arrayOfByte[3] = (byte) (int) (0xFF & paramLong);
arrayOfByte[2] = (byte) (int) ((0xFF00 & paramLong) >> 8);
arrayOfByte[1] = (byte) (int) ((0xFF0000 & paramLong) >> 16);
arrayOfByte[0] = (byte) (int) ((0xFF000000 & paramLong) >> 24);
return arrayOfByte;
}
protected static void LongToBytes4(long paramLong, byte[] paramArrayOfByte) {
paramArrayOfByte[3] = (byte) (int) (0xFF & paramLong);
paramArrayOfByte[2] = (byte) (int) ((0xFF00 & paramLong) >> 8);
paramArrayOfByte[1] = (byte) (int) ((0xFF0000 & paramLong) >> 16);
paramArrayOfByte[0] = (byte) (int) ((0xFF000000 & paramLong) >> 24);
}
protected static void IntToBytes(int paramInt, byte[] paramArrayOfByte) {
paramArrayOfByte[1] = (byte) (0xFF & paramInt);
paramArrayOfByte[0] = (byte) ((0xFF00 & paramInt) >> 8);
}
protected static void IntToBytes4(int paramInt, byte[] paramArrayOfByte) {
paramArrayOfByte[3] = (byte) (0xFF & paramInt);
paramArrayOfByte[2] = (byte) ((0xFF00 & paramInt) >> 8);
paramArrayOfByte[1] = (byte) ((0xFF0000 & paramInt) >> 16);
paramArrayOfByte[0] = (byte) (int) ((0xFF000000 & paramInt) >> 24);
}
protected static int Bytes4ToInt(byte[] paramArrayOfByte) {
return ((0xFF & paramArrayOfByte[0]) << 24
| (0xFF & paramArrayOfByte[1]) << 16
| (0xFF & paramArrayOfByte[2]) << 8 | 0xFF & paramArrayOfByte[3]);
}
protected static long Bytes4ToLong(byte[] paramArrayOfByte) {
return ((0xFF & paramArrayOfByte[0]) << 24
| (0xFF & paramArrayOfByte[1]) << 16
| (0xFF & paramArrayOfByte[2]) << 8 | 0xFF & paramArrayOfByte[3]);
}
protected static void BytesCopy(byte[] paramArrayOfByte1,
byte[] paramArrayOfByte2, int paramInt1, int paramInt2,
int paramInt3) {
int j = 0;
for (int i = paramInt1; i <= paramInt2; ++i) {
paramArrayOfByte2[(paramInt3 + j)] = paramArrayOfByte1[i];
++j;
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -