亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? coutgoingmessage.java

?? java編寫的短信收發程序
?? JAVA
字號:
// SMSLib for Java
// An open-source API Library for sending and receiving SMS via a GSM modem.
// Copyright (C) 2002-2006, Thanasis Delenikas, Athens/GREECE
// Web Site: http://www.smslib.org
//
// SMSLib is distributed under the LGPL license.
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
// version 2.1 of the License, or (at your option) any later version.
// 
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// Lesser General Public License for more details.
// 
// You should have received a copy of the GNU Lesser General Public
// License along with this library; if not, write to the Free Software
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA

package org.smslib;

import java.util.*;

public class COutgoingMessage extends CMessage implements java.io.Serializable
{
	private static final long serialVersionUID = 8448376950650775771L;

	private Date dispatchDate;
	private int validityPeriod;
	private boolean statusReport;
	private boolean flashSms;
	private int srcPort;
	private int dstPort;

	public COutgoingMessage()
	{
		super(MessageType.Outgoing, null, null, null, null);

		validityPeriod = -1;
		statusReport = false;
		flashSms = false;
		srcPort = -1;
		dstPort = -1;
		dispatchDate = null;
		setDate(new Date());
	}

	public COutgoingMessage(String recipient, String text)
	{
		super(MessageType.Outgoing, new Date(), null, recipient, text);

		validityPeriod = -1;
		statusReport = false;
		flashSms = false;
		srcPort = -1;
		dstPort = -1;
		dispatchDate = null;
		setDate(new Date());
	}

	protected boolean isBig() throws Exception
	{
		int messageLength;

		switch (getType())
		{
			case WapPushSI:
				messageLength = getPDUData().length() / 2;
				break;
			case Outgoing:
				messageLength = getText().length();
				break;
			default: throw new OopsException();
		}
		return (messageLength > maxSize() ? true : false);
	}

	protected int getNoOfParts() throws Exception
	{
		int noOfParts = 0;
		int partSize;
		int messageLength;

		partSize = maxSize() - 8;
		switch (getType())
		{
			case WapPushSI:
				messageLength = getPDUData().length() / 2;
				break;
			case Outgoing:
				messageLength = getText().length();
				break;
			default: throw new OopsException();
		}
		noOfParts = messageLength / partSize;
		if ((noOfParts * partSize) < (messageLength)) noOfParts++;
		return noOfParts;
	}

	private int maxSize() throws Exception
	{
		int size;

		switch (getMessageEncoding())
		{
			case Enc7Bit: size = 160; break;
			case Enc8Bit: size = 140; break;
			case EncUcs2: size = 70; break;
			default: throw new OopsException();
		}
		if ((getSourcePort() != -1) && (getDestinationPort() != -1)) size -= 8;
		return size;
	}

	private String getPart(String txt, int partNo) throws Exception
	{
		String textPart;
		int partSize;

		textPart = txt;
		if (partNo != 0)
		{
			partSize = maxSize() - 8;
			if (((partSize * (partNo - 1)) + partSize) > txt.length()) textPart = txt.substring(partSize * (partNo - 1));
			else textPart = txt.substring(partSize * (partNo - 1), (partSize * (partNo - 1)) + partSize);
		}
		return textPart;
	}

	private String getPDUPart(String txt, int partNo) throws Exception
	{
		String textPart;
		int partSize;

		textPart = txt;
		if (partNo != 0)
		{
			partSize = maxSize() - 8;
			partSize *= 2;
			if (((partSize * (partNo - 1)) + partSize) > txt.length()) textPart = txt.substring(partSize * (partNo - 1));
			else textPart = txt.substring(partSize * (partNo - 1), (partSize * (partNo - 1)) + partSize);
		}
		return textPart;
	}

	public String getPDU(String smscNumber, int mpRefNo, int partNo) throws Exception
	{
		String pdu, udh;
		String str1, str2;
		int i, high, low;
		char c;

		pdu = "";
		udh = "";
		if ((smscNumber != null) && (smscNumber.length() != 0))
		{
			str1 = "91" + toBCDFormat(smscNumber.substring(1));
			str2 = Integer.toHexString(str1.length() / 2);
			if (str2.length() != 2) str2 = "0" + str2;
			pdu = pdu + str2 + str1;
		}
		else if ((smscNumber != null) && (smscNumber.length() == 0)) pdu = pdu + "00";
		if (((srcPort != -1) && (dstPort != -1)) || (isBig()))
		{
			if (statusReport) pdu = pdu + "71";
			else pdu = pdu + "51";
		}
		else
		{
			if (statusReport) pdu = pdu + "31";
			else pdu = pdu + "11";
		}
		pdu = pdu + "00";
		str1 = getRecipient();
		if (str1.charAt(0) == '+')
		{
			str1 = toBCDFormat(str1.substring(1));
			str2 = Integer.toHexString(getRecipient().length() - 1);
			str1 = "91" + str1;
		}
		else
		{
			str1 = toBCDFormat(str1);
			str2 = Integer.toHexString(getRecipient().length());
			str1 = "81" + str1;
		}
		if (str2.length() != 2) str2 = "0" + str2;

		pdu = pdu + str2 + str1;
		pdu = pdu + "00";
		switch (getMessageEncoding())
		{
			case Enc7Bit:
				if (flashSms) pdu = pdu + "10";
				else pdu = pdu + "00";
				break;
			case Enc8Bit:
				if (flashSms) pdu = pdu + "14";
				else pdu = pdu + "04";
				break;
			case EncUcs2:
				if (flashSms) pdu = pdu + "18";
				else pdu = pdu + "08";
				break;
			default: throw new OopsException();
		}

		pdu = pdu + getValidityPeriodBits();

		if ((srcPort != -1) && (dstPort != -1))
		{
			String s;

			udh += "060504";
			s = Integer.toHexString(dstPort);
			while (s.length() < 4)
				s = "0" + s;
			udh += s;
			s = Integer.toHexString(srcPort);
			while (s.length() < 4)
				s = "0" + s;
			udh += s;
		}

		if (isBig())
		{
			String s;

			if ((srcPort != -1) && (dstPort != -1)) udh = "0C" + udh.substring(2) + "0804";
			else udh += "060804";
			s = Integer.toHexString(mpRefNo);
			while (s.length() < 4)
				s = "0" + s;
			udh += s;
			s = Integer.toHexString(getNoOfParts());
			while (s.length() < 2)
				s = "0" + s;
			udh += s;
			s = Integer.toHexString(partNo);
			while (s.length() < 2)
				s = "0" + s;
			udh += s;
		}

		switch (getMessageEncoding())
		{
			case Enc7Bit:
				str2 = textToPDU(getPart(getText(), partNo));
				i = CGSMAlphabet.stringToBytes(getPart(getText(), partNo), new byte[400]);
				if ((srcPort != -1) && (dstPort != -1)) str1 = Integer.toHexString(i + 8);
				else if (isBig()) str1 = Integer.toHexString(i + 8);
				else str1 = Integer.toHexString(i);
				break;
			case Enc8Bit:
				switch (getType())
				{
					case Outgoing:
						str1 = getPart(getText(), partNo);
						str2 = "";
						for (i = 0; i < str1.length(); i++)
						{
							c = str1.charAt(i);
							str2 = str2 + ((Integer.toHexString(c).length() < 2) ? "0" + Integer.toHexString(c) : Integer.toHexString(c));
						}
						if ((srcPort != -1) && (dstPort != -1)) str1 = Integer.toHexString(str1.length() + 7);
						else if (isBig()) str1 = Integer.toHexString(str1.length() + 7);
						else str1 = Integer.toHexString(str1.length());
						break;
					case WapPushSI:
						str2 = getPDUPart(getPDUData(), partNo);
						if ((isBig()) && ((srcPort != -1) && (dstPort != -1))) str1 = Integer.toHexString((str2.length() / 2) + 13);
						else if ((isBig()) || ((srcPort != -1) && (dstPort != -1))) str1 = Integer.toHexString((str2.length() / 2) + 7);
						else str1 = Integer.toHexString((str2.length() / 2) + 7);
						break;
					default:
						throw new OopsException();
				}
				break;
			case EncUcs2:
				str1 = getPart(getText(), partNo);
				str2 = "";
				for (i = 0; i < str1.length(); i++)
				{
					c = str1.charAt(i);
					high = c / 256;
					low = c % 256;
					str2 = str2 + ((Integer.toHexString(high).length() < 2) ? "0" + Integer.toHexString(high) : Integer.toHexString(high));
					str2 = str2 + ((Integer.toHexString(low).length() < 2) ? "0" + Integer.toHexString(low) : Integer.toHexString(low));
				}
				if ((srcPort != -1) && (dstPort != -1)) str1 = Integer.toHexString((str1.length() * 2) + 7);
				else if (isBig()) str1 = Integer.toHexString((str1.length() * 2) + 7);
				else str1 = Integer.toHexString(str1.length() * 2);
				break;
			default:
				throw new OopsException();
		}
		if (str1.length() != 2) str1 = "0" + str1;
		if (((srcPort != -1) && (dstPort != -1)) || (isBig())) pdu = pdu + str1 + udh + str2;
		else pdu = pdu + str1 + str2;
		return pdu.toUpperCase();
	}

	protected String getPDUData() throws Exception
	{
		throw new OopsException("The called method should be overriden!");
	}

	private String getValidityPeriodBits()
	{
		String bits;
		int value;

		if (validityPeriod == -1) bits = "FF";
		else
		{
			if (validityPeriod <= 12) value = (validityPeriod * 12) - 1;
			else if (validityPeriod <= 24) value = (((validityPeriod - 12) * 2) + 143);
			else if (validityPeriod <= 720) value = (validityPeriod / 24) + 166;
			else value = (validityPeriod / 168) + 192;
			bits = Integer.toHexString(value);
			if (bits.length() != 2) bits = "0" + bits;
			if (bits.length() > 2) bits = "FF";
		}
		return bits;
	}

	private String textToPDU(String txt) throws Exception
	{
		String pdu, str1;
		byte[] bytes, oldBytes, newBytes;
		BitSet bitSet;
		int i, j, value1, value2;

		bytes = new byte[400];
		i = CGSMAlphabet.stringToBytes(txt, bytes);
		oldBytes = new byte[i];
		for (j = 0; j < i; j++)
			oldBytes[j] = bytes[j];
		bitSet = new BitSet(oldBytes.length * 8);

		value1 = 0;
		for (i = 0; i < oldBytes.length; i++)
			for (j = 0; j < 7; j++)
			{
				value1 = (i * 7) + j;
				if ((oldBytes[i] & (1 << j)) != 0) bitSet.set(value1);
			}
		value1++;

		if (((value1 / 56) * 56) != value1) value2 = (value1 / 8) + 1;
		else value2 = (value1 / 8);
		if (value2 == 0) value2 = 1;

		newBytes = new byte[value2];
		for (i = 0; i < value2; i++)
			for (j = 0; j < 8; j++)
				if ((value1 + 1) > ((i * 8) + j)) if (bitSet.get(i * 8 + j)) newBytes[i] |= (byte) (1 << j);

		pdu = "";
		for (i = 0; i < value2; i++)
		{
			str1 = Integer.toHexString(newBytes[i]);
			if (str1.length() != 2) str1 = "0" + str1;
			str1 = str1.substring(str1.length() - 2, str1.length());
			pdu += str1;
		}
		return pdu;
	}

	private String toBCDFormat(String s)
	{
		String bcd;
		int i;

		if ((s.length() % 2) != 0) s = s + "F";
		bcd = "";
		for (i = 0; i < s.length(); i += 2)
			bcd = bcd + s.charAt(i + 1) + s.charAt(i);
		return bcd;
	}

	/**
	*	Returns the message recipient number. Number is in international format.
	*
	*	@return	The Recipient's number.
	*/
	public String getRecipient() { return recipient; }
	public int getValidityPeriod() { return validityPeriod; }
	public boolean getStatusReport() { return statusReport; }
	public boolean getFlashSms() { return flashSms; }
	public int getSourcePort() { return srcPort; }
	public int getDestinationPort() { return dstPort; }
	public Date getDispatchDate() { return dispatchDate; }

	/**
	*	Sets the Recipient's number. The number should be in international format.
	*
	*	@param	recipient	The Recipient's number.
	*/
	public void setRecipient(String recipient) { this.recipient = recipient; }
	public void setValidityPeriod(int hours) { this.validityPeriod = hours; }
	public void setStatusReport(boolean statusReport) { this.statusReport = statusReport; }
	public void setFlashSms(boolean flashSms) { this.flashSms = flashSms; }
	public void setSourcePort(int port) { this.srcPort = port; }
	public void setDestinationPort(int port) { this.dstPort = port; }
	public void setDispatchDate(Date date) { this.dispatchDate = date; }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美猛男超大videosgay| 国产成人精品三级| 一区在线播放视频| 久久久亚洲午夜电影| 91麻豆精品国产91久久久久久久久 | 亚洲视频在线一区| 国产精品无遮挡| 久久精品一区二区三区不卡牛牛 | 国产自产高清不卡| 免费成人av在线播放| 视频一区视频二区中文字幕| 亚洲国产一区二区视频| 亚洲电影激情视频网站| 无吗不卡中文字幕| 日韩激情中文字幕| 日韩国产高清影视| 韩国欧美一区二区| 国产成人免费9x9x人网站视频| 国产精品18久久久久久久久| 国产精品自拍三区| 97久久人人超碰| 欧美怡红院视频| 欧美精品v日韩精品v韩国精品v| 欧美精品粉嫩高潮一区二区| 日韩精品一区二区在线| 久久久不卡网国产精品二区| 国产精品国模大尺度视频| 亚洲欧美日韩国产另类专区| 亚洲成年人影院| 久久精品国产精品亚洲红杏| 国产精品一区2区| 91网页版在线| 日韩一区二区电影| 中文字幕在线不卡| 性做久久久久久免费观看| 国内精品久久久久影院色| 成人av在线网站| 欧美精品粉嫩高潮一区二区| 久久久久国产精品免费免费搜索| 亚洲同性同志一二三专区| 日韩精品乱码av一区二区| 国内精品写真在线观看| 欧美在线观看一区| 久久色在线视频| 亚洲第一av色| 成人在线视频一区| 日韩视频在线观看一区二区| 亚洲欧美自拍偷拍色图| 乱中年女人伦av一区二区| 99国产精品久| 久久久综合视频| 午夜电影一区二区| 91碰在线视频| 久久先锋资源网| 日韩精品一二三| 色综合久久中文字幕综合网 | 狠狠狠色丁香婷婷综合激情| 色综合中文字幕国产 | 欧美日韩综合一区| 国产精品午夜电影| 久久国产精品99久久人人澡| 欧洲精品一区二区三区在线观看| 久久香蕉国产线看观看99| 日韩精品乱码免费| 在线观看亚洲一区| 亚洲欧洲三级电影| 国产91精品精华液一区二区三区| 欧美一级二级三级蜜桃| 亚洲成人动漫精品| 色综合久久88色综合天天6| 中文字幕精品—区二区四季| 久久国产尿小便嘘嘘尿| 日韩写真欧美这视频| 婷婷开心激情综合| 欧美午夜精品久久久久久超碰| 亚洲欧洲日韩在线| 白白色亚洲国产精品| 亚洲国产激情av| 国产成人免费av在线| 欧美精品一区二区蜜臀亚洲| 免费观看在线综合| 日韩写真欧美这视频| 老司机一区二区| 亚洲高清三级视频| 在线视频你懂得一区二区三区| 日韩一区欧美一区| 91久久精品一区二区三| 亚洲免费看黄网站| 欧美日韩在线不卡| 日韩制服丝袜av| 精品国产免费视频| 国产成都精品91一区二区三| 国产精品久久久久aaaa樱花| 99国产精品视频免费观看| 一区二区三区加勒比av| 91久久精品国产91性色tv| 一区二区三区日韩欧美| 欧美亚洲高清一区二区三区不卡| 午夜视黄欧洲亚洲| 欧美r级在线观看| 懂色av中文字幕一区二区三区| 日韩理论在线观看| 欧美男男青年gay1069videost| 欧美a级理论片| 欧美国产1区2区| 欧日韩精品视频| 久久99久久99| 亚洲乱码中文字幕| 日韩一区二区三区电影在线观看 | 久久久精品免费免费| www.成人在线| 婷婷丁香激情综合| 国产日韩精品一区二区三区在线| 91麻豆国产自产在线观看| 日韩电影在线免费观看| 欧美精品一区二区三区在线播放| 日韩国产欧美视频| 久久免费看少妇高潮| 99在线精品观看| 亚洲成人福利片| 中文字幕一区免费在线观看| 日本黄色一区二区| 蜜臀久久99精品久久久久宅男| 欧美精品一区二区三区在线播放| 成人午夜激情片| 偷拍亚洲欧洲综合| 日本一区二区三区国色天香| 91网址在线看| 国产成人精品亚洲777人妖| 亚洲精品国产精华液| 91精品国产欧美一区二区成人| 日本大胆欧美人术艺术动态| 国产欧美一区在线| 在线免费不卡视频| 国产乱对白刺激视频不卡| 亚洲视频你懂的| 国产日产欧美一区二区视频| 在线亚洲高清视频| 国产伦精品一区二区三区免费 | 成人在线视频一区二区| 日本一区二区三区久久久久久久久不 | 久久久午夜精品| 欧洲另类一二三四区| 国内精品在线播放| 日欧美一区二区| 中文字幕在线不卡一区| 国产精品毛片高清在线完整版| 3d动漫精品啪啪| 色综合视频在线观看| 加勒比av一区二区| 亚洲h在线观看| 亚洲女女做受ⅹxx高潮| 国产亚洲精品aa| 日韩亚洲欧美一区| 欧美日韩国产首页| 国产成a人亚洲精| 国产ts人妖一区二区| 蜜桃视频免费观看一区| 亚洲午夜免费电影| 亚洲色图制服诱惑| 国产精品久久久久久久久搜平片| 欧美精品在线一区二区| 色婷婷av一区二区三区之一色屋| 国产成人免费在线| 激情文学综合插| 国产高清成人在线| 国产一区二区三区国产| 蜜桃av噜噜一区| 婷婷开心激情综合| 亚洲狠狠爱一区二区三区| 亚洲6080在线| 午夜激情一区二区三区| 亚洲一区二区三区在线看 | 国产精品影音先锋| 成人天堂资源www在线| 国产一区激情在线| 国产麻豆精品一区二区| 国产成人综合亚洲网站| 国产成人日日夜夜| eeuss国产一区二区三区| 97精品国产97久久久久久久久久久久| 国产91精品一区二区| 成人三级伦理片| 石原莉奈在线亚洲二区| 一本久久精品一区二区| 国产一区二区在线看| 国产精一品亚洲二区在线视频| 激情久久五月天| 青青草原综合久久大伊人精品| 亚洲综合成人网| 日韩亚洲欧美高清| 亚洲高清视频在线| 成人app在线观看| 精品精品欲导航| 亚洲成人自拍网| 色哟哟在线观看一区二区三区| 久久久久久夜精品精品免费| 午夜精品一区二区三区免费视频 | 欧美男女性生活在线直播观看| 亚洲欧美日韩人成在线播放|