cmppconnect.java
来自「短信系统SMS:支持普通短信、长短信和wap push短信的发送。」· Java 代码 · 共 171 行
JAVA
171 行
package com.ekun.sms.cmpp2;
import java.io.*;
public class CmppConnect
{
public CmppConnect(CmppSocket sock)
{
/*初始化*/
SourceAddr = "";
AuthenticatorSP = "";
Version = 1;
timestamp = "";
this.sock = sock;
SequenceId = 0;
CommandID = 1;
/*设置CMPP_Connect包长*/
TotalLength = 39;
/*分配CMPP_Connect包体*/
bodybytes = new byte[27];
/*设置包头*/
headbytes = new byte[12];
CmppCommon.BytesCopy(CmppCommon.IntToBytes4(TotalLength), headbytes, 0, 3,
0);
CmppCommon.BytesCopy(CmppCommon.IntToBytes4(CommandID), headbytes, 0, 3, 4);
CmppCommon.BytesCopy(CmppCommon.IntToBytes4(SequenceId), headbytes, 0, 3, 8);
}
/*名称:setcmppConnects
* 功能:设置CMPP_Connect包项目
* 输入参数:SourceAddr,AuthenticatorSP,Version,timestamp
*
* 输出参数:无
*
* 返回值:无
*/
public void setcmppConnects(String SourceAddr, String SPpassword, int Version,
String timestamp)
{
byte[] bSourceAddr;
if (SourceAddr.length() > 6)
{
bSourceAddr = new byte[6];
}
else
{
bSourceAddr = new byte[SourceAddr.length()];
}
int cur_pos = 0;
bSourceAddr = SourceAddr.getBytes();
CmppCommon.BytesCopy(bSourceAddr, bodybytes, 0, bSourceAddr.length - 1,
cur_pos);
cur_pos += 6;
byte bzero[] = new byte[9];
byte bSPpassword[] = new byte[SPpassword.length()];
bSPpassword = SPpassword.getBytes();
byte btimestamp[] = timestamp.getBytes();
byte bmd5[] = new byte[bSourceAddr.length + 9 + bSPpassword.length +
btimestamp.length];
int cur = 0;
CmppCommon.BytesCopy(bSourceAddr, bmd5, 0, bSourceAddr.length - 1, cur);
cur += bSourceAddr.length;
CmppCommon.BytesCopy(bzero, bmd5, 0, bzero.length - 1, cur);
cur += bzero.length;
CmppCommon.BytesCopy(bSPpassword, bmd5, 0, bSPpassword.length - 1, cur);
cur += bSPpassword.length;
CmppCommon.BytesCopy(btimestamp, bmd5, 0, btimestamp.length - 1, cur);
/*MD5加密*/
MD5 md5 = new MD5();
md5.Init();
md5.Update(bmd5);
bmd5 = md5.Final();
CmppCommon.BytesCopy(bmd5, bodybytes, 0, bmd5.length - 1, cur_pos);
cur_pos += bmd5.length;
bodybytes[cur_pos] = (byte) Version;
cur_pos++;
int timest = Integer.parseInt(timestamp);
byte tempbytes[] = new byte[4];
tempbytes = CmppCommon.IntToBytes4(timest);
CmppCommon.BytesCopy(tempbytes, bodybytes, 0, 3, cur_pos);
}
/*名称:sendcmppConnect
* 功能:发送CMPP_Connect包
* 输入参数:无
*
* 输出参数:无
*
* 返回值:>0:包序列号,-1:失败
*/
public int sendcmppConnect()
{
int i = 0;
try
{
sock.bout.write(headbytes);
sock.bout.write(bodybytes);
sock.bout.flush();
}
catch (IOException e)
{
System.out.println(e.toString());
i = -5;
return i;
}
catch (NullPointerException npe)
{
i = -5;
return -5;
}
return i;
}
/*名称:getTotalLength
* 功能:返回包总长度
* 输入参数:
*
* 输出参数:无
*
* 返回值:包总长度
*/
public int getTotalLength()
{
return TotalLength;
}
/*名称:setSequenceId
* 功能:设置SequenceId项目
* 输入参数:SequenceId
*
* 输出参数:无
*
* 返回值:无
*/
public void setSequenceId(int SequenceId)
{
this.SequenceId = SequenceId;
CmppCommon.BytesCopy(CmppCommon.IntToBytes4(SequenceId), headbytes, 0, 3, 8);
}
public byte bodybytes[]; /*包体*/
public byte headbytes[]; /*包头*/
String SourceAddr;
String AuthenticatorSP;
int Version;
String timestamp;
private int CommandID; //包类型
private int SequenceId; //包序列号
int TotalLength;
CmppSocket sock; //socket链路
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?