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

📄 cmppsubmit.java

📁 短信网关发送接受平台。
💻 JAVA
字号:
import java.lang.*;
import java.net.*;
import java.io.*;

import CMPPCommandID;
import CMPPPacket;

public class CMPPSubmit extends CMPPPacket
{
	public int msg_id = 1;//信息标识
	public byte pk_total = 1;//相同msg_id的消息总条数,从1开始
	public byte pk_number = 1;//相同msg_id的消息序号,从1开始
	public byte registered_delivery = 0;//是否要求返回状态确认报告
	public byte msg_level = 0;//信息级别
	public String service_id = null;//服务类型
	public byte fee_usertype = 0;//计费用户类型字段
	public byte msg_fmt = 0;//信息格式
	public String msg_src = null;//信息内容来源(SP_ID)
	public String feetype = null;//资费类别
	public String feecode = null;//资费代码(以分为单位)
	public String valid_time = null;//存活有效期,遵循SMPP3.3协议
	public String at_time = null;//定时发送,遵循SMPP3.3协议
	public String src_terminal_id = null;//源终端MSISDN号码(没有可以为空)
	public byte destusr_tl = 0;//接收消息的用户数量(小于100个用户)
	public String[] dest_terminal_id;//接收业务的MSISDN号码
	public byte msg_length = 0;//消息的长度(msg_fmt的值为0时,小于160个字节;其他<=140字节)
	public String msg_content = null;//消息内容
	
	//保留字段
	private String reserve = "19751204";
	
	public CMPPSubmit(int sequence_id)
	{
		super(CMPPCommandID.CMPP_SUBMIT,sequence_id);
	}
	
	public CMPPSubmit(CMPPPacket packet)
	{
		super(packet);
	}
	
	public void makeAscIISubmit(int number,int total,String terminal_id,String content)
	{
		msg_id = 1;
		pk_total = (byte)total;
		pk_number = (byte)number;
		registered_delivery = 1;
		msg_level = 0;
		service_id = "          ";
		fee_usertype = 1;//对发送方计费
		msg_fmt = 0;//ASCII串
		msg_src = "888888";
		feetype = "01";//对记费用户号码免费
		feecode = "000000";//0分
		valid_time = "00000000000000000";
		at_time = "00000000000000000";
		src_terminal_id = "000000000000000000000";
		
		addDestTerminalID(terminal_id);
		addMsgContent(content);
	}
	
	public void addDestTerminalID(String terminal_id)
	{
		if(terminal_id != null && terminal_id.length() > 0)
		{
			for(int i = terminal_id.length();i < 21;i ++)
			//补齐数据
			{
				terminal_id = '0' + terminal_id;
			}
			
			int nSize = (dest_terminal_id == null) ? 0 : dest_terminal_id.length;
			
			String[] ids = new String[nSize + 1];
			for(int i = 0;i < nSize;i ++)
			{
				ids[i] = this.dest_terminal_id[i];
			}
			
			ids[nSize] = terminal_id;
			
			destusr_tl = (byte)((nSize + 1) & 0xff);
			dest_terminal_id = ids;
		}
	}
	
	public void addMsgContent(String content)
	{
		if(content != null && content.length() > 0 && content.length() < 160)
		{
			msg_length = (byte)(content.length() & 0xff);
			msg_content = content;
		}
	}
	
	public boolean isValid()
	{
		if(command_id != CMPPCommandID.CMPP_SUBMIT)
		{
			CMPPLog.log("CMPPSubmit.isValid : not a CMPP_SUBMIT command !",
				CMPPLog.LOG_CMPP_SUBMIT | CMPPLog.LOG_ISVALID_METHOD);
			return false;
		}
		
		if(msg_id <= 0)
		{
			CMPPLog.log("CMPPSubmit.isValid : invalid msg_id !",
				CMPPLog.LOG_CMPP_SUBMIT | CMPPLog.LOG_ISVALID_METHOD);
			return false;
		}
			
		if(pk_number <= 0 || pk_number > pk_total)
		{
			CMPPLog.log("CMPPSubmit.isValid : invalid pk_total or pk_number !",
				CMPPLog.LOG_CMPP_SUBMIT | CMPPLog.LOG_ISVALID_METHOD);
			return false;
		}
		
		if(registered_delivery < 0 || registered_delivery > 2)
		{
			CMPPLog.log("CMPPSubmit.isValid : invalid registered_delivery !",
				CMPPLog.LOG_CMPP_SUBMIT | CMPPLog.LOG_ISVALID_METHOD);
			return false;
		}
		
		if(msg_level < 0 || msg_level > 9)
		{
			CMPPLog.log("CMPPSubmit.isValid : invalid msg_level !",
				CMPPLog.LOG_CMPP_SUBMIT | CMPPLog.LOG_ISVALID_METHOD);
			return false;
		}
		
		if(service_id == null || service_id.length() != 10)
		{
			CMPPLog.log("CMPPSubmit.isValid : invalid service_id !",
				CMPPLog.LOG_CMPP_SUBMIT | CMPPLog.LOG_ISVALID_METHOD);
			return false;
		}

		if(fee_usertype < 0 || fee_usertype > 2)
		{
			CMPPLog.log("CMPPSubmit.isValid : invalid fee_usertype !",
				CMPPLog.LOG_CMPP_SUBMIT | CMPPLog.LOG_ISVALID_METHOD);
			return false;
		}

		if(msg_fmt != 0 && msg_fmt != 3 && msg_fmt != 4 && msg_fmt != 8 && msg_fmt != 15)
		{
			CMPPLog.log("CMPPSubmit.isValid : invalid msg_fmt !",
				CMPPLog.LOG_CMPP_SUBMIT | CMPPLog.LOG_ISVALID_METHOD);
			return false;
		}
		
		if(msg_src == null || msg_src.length() != 6)
		{
			CMPPLog.log("CMPPSubmit.isValid : invalid msg_src !",
				CMPPLog.LOG_CMPP_SUBMIT | CMPPLog.LOG_ISVALID_METHOD);
			return false;
		}
		
		if(feetype == null || feetype.length() != 2)
		{
			CMPPLog.log("CMPPSubmit.isValid : invalid feetype !",
				CMPPLog.LOG_CMPP_SUBMIT | CMPPLog.LOG_ISVALID_METHOD);
			return false;
		}
		
		if(feecode == null || feecode.length() != 6)
		{
			CMPPLog.log("CMPPSubmit.isValid : invalid feecode !",
				CMPPLog.LOG_CMPP_SUBMIT | CMPPLog.LOG_ISVALID_METHOD);
			return false;
		}

		if(valid_time == null || valid_time.length() != 17)
		{
			CMPPLog.log("CMPPSubmit.isValid : invalid valid_time !",
				CMPPLog.LOG_CMPP_SUBMIT | CMPPLog.LOG_ISVALID_METHOD);
			return false;
		}

		if(at_time == null || at_time.length() != 17)
		{
			CMPPLog.log("CMPPSubmit.isValid : invalid at_time !",
				CMPPLog.LOG_CMPP_SUBMIT | CMPPLog.LOG_ISVALID_METHOD);
			return false;
		}
		
		if(src_terminal_id == null || src_terminal_id.length() != 21)
		{
			CMPPLog.log("CMPPSubmit.isValid : invalid src_terminal_id !",
				CMPPLog.LOG_CMPP_SUBMIT | CMPPLog.LOG_ISVALID_METHOD);
			return false;
		}
			
		if(destusr_tl <= 0 || destusr_tl >= 100)
		{
			CMPPLog.log("CMPPSubmit.isValid : invalid destusr_tl or too much destusr_tl !",
				CMPPLog.LOG_CMPP_SUBMIT | CMPPLog.LOG_ISVALID_METHOD);
			return false;
		}
		
		if(dest_terminal_id == null || dest_terminal_id.length != destusr_tl)
		{
			CMPPLog.log("CMPPSubmit.isValid : null dest_terminal_id or not according to destusr_tl !",
				CMPPLog.LOG_CMPP_SUBMIT | CMPPLog.LOG_ISVALID_METHOD);
			return false;
		}
			
		for(int i = 0;i < destusr_tl;i ++)
		{
			if(dest_terminal_id[i] == null || dest_terminal_id[i].length() != 21)
			{
				CMPPLog.log("CMPPSubmit.isValid : invalid dest_terminal_id !",
					CMPPLog.LOG_CMPP_SUBMIT | CMPPLog.LOG_ISVALID_METHOD);
				return false;
			}
		}
		
		if(msg_length <= 0 || (msg_fmt == 0 && msg_length >= 160) || (msg_fmt != 0 && msg_length > 140))
		{
			CMPPLog.log("CMPPSubmit.isValid : invalid msg_length !",
				CMPPLog.LOG_CMPP_SUBMIT | CMPPLog.LOG_ISVALID_METHOD);
			return false;
		}
		
		if(msg_content == null || msg_content.length() != msg_length)
		{
			CMPPLog.log("CMPPSubmit.isValid : invalid msg_content !",
				CMPPLog.LOG_CMPP_SUBMIT | CMPPLog.LOG_ISVALID_METHOD);
			return false;
		}
		
		return true;
	}
	
	public void dump(long lMethod)
	{
		CMPPLog.log("\tmsg_id = 0x" + CMPPUtility.toHexString(msg_id),
			CMPPLog.LOG_CMPP_SUBMIT | lMethod);

		CMPPLog.log("\tpk_total = " + pk_total,
			CMPPLog.LOG_CMPP_SUBMIT | lMethod);

		CMPPLog.log("\tpk_number = " + pk_number,
			CMPPLog.LOG_CMPP_SUBMIT | lMethod);

		CMPPLog.log("\tregistered_delivery = " + registered_delivery
			 + " [" + CMPPUtility.getRegisteredDeliveryDescription(registered_delivery) + "]",
			CMPPLog.LOG_CMPP_SUBMIT | lMethod);
			
		CMPPLog.log("\tmsg_level = " + msg_level,
			CMPPLog.LOG_CMPP_SUBMIT | lMethod);

		CMPPLog.log("\tservice_id = \"" + service_id + "\"",
			CMPPLog.LOG_CMPP_SUBMIT | lMethod);

		CMPPLog.log("\tfee_usertype = 0x" + CMPPUtility.toHexString(fee_usertype),
			CMPPLog.LOG_CMPP_SUBMIT | lMethod);

		CMPPLog.log("\tmsg_fmt = " + msg_fmt 
			+ " [" + CMPPUtility.getMsgFmtDescription(msg_fmt) + "]",
			CMPPLog.LOG_CMPP_SUBMIT | lMethod);

		CMPPLog.log("\tmsg_src = \"" + msg_src + "\"",
			CMPPLog.LOG_CMPP_SUBMIT | lMethod);
			
		CMPPLog.log("\tfeetype = \"" + feetype + "\"",
			CMPPLog.LOG_CMPP_SUBMIT | lMethod);

		CMPPLog.log("\tfeecode = \"" + feecode + "\"",
			CMPPLog.LOG_CMPP_SUBMIT | lMethod);

		CMPPLog.log("\tvalid_time = \"" + valid_time + "\"",
			CMPPLog.LOG_CMPP_SUBMIT | lMethod);

		CMPPLog.log("\tat_time = \"" + at_time + "\"",
			CMPPLog.LOG_CMPP_SUBMIT | lMethod);

		CMPPLog.log("\tsrc_terminal_id = \"" + src_terminal_id + "\"",
			CMPPLog.LOG_CMPP_SUBMIT | lMethod);

		CMPPLog.log("\tdestusr_tl = " + destusr_tl,
			CMPPLog.LOG_CMPP_SUBMIT | lMethod);

		for(int i = 0;i < destusr_tl;i ++)
		{
			CMPPLog.log("\tdest_terminal_id[" + i + "] = \"" + dest_terminal_id[i] + "\"",
				CMPPLog.LOG_CMPP_SUBMIT | lMethod);
		}
			
		CMPPLog.log("\tmsg_length = " + msg_length,
			CMPPLog.LOG_CMPP_SUBMIT | lMethod);
			
		CMPPLog.log("\tmsg_content = \"" + msg_content + "\"",
			CMPPLog.LOG_CMPP_SUBMIT | lMethod);
			
		CMPPLog.log("\treserve = \"" + reserve + "\"",
			CMPPLog.LOG_CMPP_SUBMIT | lMethod);
	}
	
	public void wrap()
		throws CMPPException
	{
		CMPPLog.log("CMPPSubmit.wrap : wrap elements !",
			CMPPLog.LOG_CMPP_SUBMIT | CMPPLog.LOG_WRAP_METHOD);

		dump(CMPPLog.LOG_WRAP_METHOD);
		
		insertString(reserve);
		insertString(msg_content);
		insertByte(msg_length);
		
		for(int i = destusr_tl;i > 0;i --)
		{
			insertString(dest_terminal_id[i - 1]);
		}
		
		insertByte(destusr_tl);
		insertString(src_terminal_id);
		insertString(at_time);
		insertString(valid_time);
		insertString(feecode);
		insertString(feetype);
		insertString(msg_src);
		insertByte(msg_fmt);
		insertByte(fee_usertype);
		insertString(service_id);
		insertByte(msg_level);
		insertByte(registered_delivery);
		insertByte(pk_number);
		insertByte(pk_total);
		insertInteger(msg_id);
	}
	
	public void unwrap()
		throws CMPPException
	{
		CMPPLog.log("CMPPSubmit.unwrap : unwrap elements !",
			CMPPLog.LOG_CMPP_SUBMIT | CMPPLog.LOG_UNWRAP_METHOD);
		
		msg_id = getInteger();
		pk_total = getByte();
		pk_number = getByte();
		registered_delivery = getByte();
		msg_level = getByte();
		service_id = getString(10);
		fee_usertype = getByte();
		msg_fmt = getByte();
		msg_src = getString(6);
		feetype = getString(2);
		feecode = getString(6);
		valid_time = getString(17);
		at_time = getString(17);
		src_terminal_id = getString(21);
		destusr_tl = getByte();
		
		dest_terminal_id = new String[destusr_tl];
		for(int i = 0;i < destusr_tl;i ++)
		{
			dest_terminal_id[i] = getString(21);
		}
		
		msg_length = getByte();
		msg_content = getString(msg_length);
		
		reserve = getString(8);
			
		dump(CMPPLog.LOG_UNWRAP_METHOD);
	}	
}

⌨️ 快捷键说明

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