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

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

?? modemgateway.java

?? 發送短信 接收短信 多種接口com/net/modem 開發庫
?? JAVA
?? 第 1 頁 / 共 3 頁
字號:
// SMSLib for Java v3
// A Java API library for sending and receiving SMS via a GSM modem
// or other supported gateways.
// Web Site: http://www.smslib.org
//
// Copyright (C) 2002-2009, Thanasis Delenikas, Athens/GREECE.
// SMSLib is distributed under the terms of the Apache License version 2.0
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

package org.smslib.modem;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.StringReader;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collection;
import java.util.Date;
import java.util.List;
import java.util.Random;
import java.util.StringTokenizer;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.ajwcc.pduUtils.gsm3040.Pdu;
import org.ajwcc.pduUtils.gsm3040.PduParser;
import org.ajwcc.pduUtils.gsm3040.PduUtils;
import org.ajwcc.pduUtils.gsm3040.SmsDeliveryPdu;
import org.ajwcc.pduUtils.gsm3040.SmsStatusReportPdu;
import org.smslib.AGateway;
import org.smslib.Contact;
import org.smslib.GatewayException;
import org.smslib.InboundBinaryMessage;
import org.smslib.InboundEncryptedMessage;
import org.smslib.InboundMessage;
import org.smslib.OutboundMessage;
import org.smslib.Phonebook;
import org.smslib.StatusReportMessage;
import org.smslib.TimeoutException;
import org.smslib.UnknownMessage;
import org.smslib.InboundMessage.MessageClasses;
import org.smslib.OutboundMessage.MessageStatuses;
import org.smslib.modem.athandler.AATHandler;

/**
 * Class representing GSM modems or phones. Extends AGateway with modem specific
 * operations.
 */
public class ModemGateway extends AGateway
{
	/**
	 * Class representing different types of GSM modems / phones.
	 */
	public enum ModemTypes
	{
		/**
		 * Serially connected modem. These modems are connected via a serial
		 * port, either physical or emulated (i.e. USB, IrDA, etc).
		 */
		SERIAL,
		/**
		 * IP connected modem.
		 */
		IP
	}

	public enum IPProtocols
	{
		TEXT, BINARY
	}

	private AModemDriver driver;

	private AATHandler atHandler;

	private String modemDevice;

	private int modemParms;

	private IPProtocols ipProtocol;

	private String manufacturer;

	private String model;

	private String simPin, simPin2;

	private String customInitString;

	private String smscNumber;

	private int outMpRefNo;

	private List<List<InboundMessage>> mpMsgList;

	public ModemGateway(ModemTypes myType, String id, String myModemDevice, int myModemParms, String myManufacturer, String myModel)
	{
		super(id);
		init(myType, myModemDevice, myModemParms, myManufacturer, myModel, null);
	}

	public ModemGateway(String id, String myModemDevice, int myModemParms, String myManufacturer, String myModel, AModemDriver myDriver)
	{
		super(id);
		init(null, myModemDevice, myModemParms, myManufacturer, myModel, myDriver);
	}

	private void init(ModemTypes myType, String myModemDevice, int myModemParms, String myManufacturer, String myModel, AModemDriver myDriver)
	{
		setModemDevice(myModemDevice);
		setModemParms(myModemParms);
		setIpProtocol(IPProtocols.TEXT);
		this.manufacturer = myManufacturer;
		this.model = myModel;
		setAttributes(AGateway.GatewayAttributes.SEND | AGateway.GatewayAttributes.RECEIVE | AGateway.GatewayAttributes.BIGMESSAGES | AGateway.GatewayAttributes.WAPSI | AGateway.GatewayAttributes.PORTADDRESSING | AGateway.GatewayAttributes.FLASHSMS | AGateway.GatewayAttributes.DELIVERYREPORTS);
		if (myDriver != null) setDriver(myDriver);
		else
		{
			if (myType == ModemTypes.SERIAL) setDriver(new SerialModemDriver(this, getModemDevice() + ":" + getModemParms()));
			else setDriver(new IPModemDriver(this, getModemDevice() + ":" + getModemParms()));
		}
		setAtHandler(AATHandler.load(this, this.manufacturer, this.model));
		setSimPin("");
		setSimPin2("");
		setSmscNumber("");
		setCustomInitString("");
		this.outMpRefNo = new Random().nextInt();
		if (this.outMpRefNo < 0) this.outMpRefNo *= -1;
		this.outMpRefNo %= 65536;
		this.mpMsgList = new ArrayList<List<InboundMessage>>();
	}

	public void setIpProtocol(IPProtocols myIpProtocol)
	{
		this.ipProtocol = myIpProtocol;
	}

	public IPProtocols getIpProtocol()
	{
		return this.ipProtocol;
	}

	@Override
	public void startGateway() throws TimeoutException, GatewayException, IOException, InterruptedException
	{
		getService().getLogger().logInfo("Starting gateway, using " + getATHandler().getDescription() + " AT Handler.", null, getGatewayId());
		getDriver().connect();
		super.startGateway();
		getService().getLogger().logInfo("Gateway started.", null, getGatewayId());
	}

	@Override
	public void stopGateway() throws TimeoutException, GatewayException, IOException, InterruptedException
	{
		getService().getLogger().logInfo("Stopping gateway...", null, getGatewayId());
		getATHandler().done();
		super.stopGateway();
		getDriver().disconnect();
		getService().getLogger().logInfo("Gateway stopped.", null, getGatewayId());
	}

	@Override
	public void readMessages(Collection<InboundMessage> msgList, MessageClasses msgClass) throws TimeoutException, GatewayException, IOException, InterruptedException
	{
		if (getStatus() != GatewayStatuses.STARTED) return;
		synchronized (getDriver().getSYNCCommander())
		{
			if (getProtocol() == Protocols.PDU) readMessagesPDU(msgList, msgClass, 0);
			else if (getProtocol() == Protocols.TEXT) readMessagesTEXT(msgList, msgClass, 0);
		}
	}

	@Override
	public InboundMessage readMessage(String memLoc, int memIndex) throws TimeoutException, GatewayException, IOException, InterruptedException
	{
		Collection<InboundMessage> msgList;
		if (getStatus() != GatewayStatuses.STARTED) return null;
		synchronized (getDriver().getSYNCCommander())
		{
			msgList = new ArrayList<InboundMessage>();
			readMessages(msgList, MessageClasses.ALL);
			for (InboundMessage msg : msgList)
				if ((msg.getMemIndex() == memIndex) && (msg.getMemLocation().equals(memLoc))) return msg;
			return null;
		}
	}

	@Override
	public boolean sendMessage(OutboundMessage msg) throws TimeoutException, GatewayException, IOException, InterruptedException
	{
		if (getStatus() != GatewayStatuses.STARTED) return false;
		synchronized (getDriver().getSYNCCommander())
		{
			if (getProtocol() == Protocols.PDU) return sendMessagePDU(msg);
			else if (getProtocol() == Protocols.TEXT) return sendMessageTEXT(msg);
			else return false;
		}
	}

	@Override
	public boolean deleteMessage(InboundMessage msg) throws TimeoutException, GatewayException, IOException, InterruptedException
	{
		if (getStatus() != GatewayStatuses.STARTED) return false;
		synchronized (getDriver().getSYNCCommander())
		{
			if (msg.getMemIndex() >= 0) return deleteMessage(msg.getMemIndex(), msg.getMemLocation());
			else if ((msg.getMemIndex() == -1) && (msg.getMpMemIndex().length() != 0))
			{
				StringTokenizer tokens = new StringTokenizer(msg.getMpMemIndex(), ",");
				while (tokens.hasMoreTokens())
					deleteMessage(Integer.parseInt(tokens.nextToken()), msg.getMemLocation());
			}
			return true;
		}
	}

	@Override
	public int readPhonebook(Phonebook phonebook) throws TimeoutException, GatewayException, IOException, InterruptedException
	{
		int count = 0;
		String locations, location, entries, entry;
		locations = getATHandler().readPhonebookLocations();
		if (locations.length() > 0)
		{
			StringTokenizer tokens = new StringTokenizer(locations, ",");
			while (tokens.hasMoreTokens())
			{
				location = tokens.nextToken().replaceAll("\"", "");
				entries = getATHandler().readPhonebook(location);
				if ((entries == null) || (entries.trim().length() == 0)) continue;
				BufferedReader reader = new BufferedReader(new StringReader(entries));
				entry = reader.readLine().trim();
				while (!entry.equalsIgnoreCase("OK"))
				{
					entry = entry.replaceAll("\\s*\\+CPBR:\\s*", "");
					entry = entry.replaceAll("\"\"", "\" \"");
					entry = entry.replaceAll("\"", "");
					StringTokenizer tokens4 = new StringTokenizer(entry, ",");
					String index = tokens4.nextToken();
					index = (index == null ? "" : index.trim());
					String phone = tokens4.nextToken();
					phone = (phone == null ? "" : phone.trim());
					// TODO: Parse number type.
					String type = tokens4.nextToken();
					type = (type == null ? "" : type.trim());
					// TODO: *end*
					String name = tokens4.nextToken();
					name = (name == null ? "" : name.trim());
					phonebook.getContacts().add(new Contact(name, phone, location, Integer.parseInt(index)));
					count++;
					entry = reader.readLine().trim();
				}
				reader.close();
			}
		}
		return count;
	}

	private boolean deleteMessage(int memIndex, String memLocation) throws TimeoutException, GatewayException, IOException, InterruptedException
	{
		return getATHandler().deleteMessage(memIndex, memLocation);
	}

	private boolean sendMessageTEXT(OutboundMessage msg) throws TimeoutException, GatewayException, IOException, InterruptedException
	{
		int refNo;
		boolean ok = false;
		refNo = getATHandler().sendMessage(0, "", msg.getRecipient(), msg.getText());
		if (refNo >= 0)
		{
			msg.setGatewayId(getGatewayId());
			msg.setRefNo("" + refNo);
			msg.setDispatchDate(new Date());
			msg.setMessageStatus(MessageStatuses.SENT);
			incOutboundMessageCount();
			ok = true;
		}
		else
		{
			msg.setRefNo(null);
			msg.setDispatchDate(null);
			msg.setMessageStatus(MessageStatuses.FAILED);
		}
		return ok;
	}

	private void readMessagesTEXT(Collection<InboundMessage> msgList, MessageClasses msgClass, int myLimit) throws TimeoutException, GatewayException, IOException, InterruptedException
	{
		int i, j, memIndex;
		int limit = (myLimit < 0 ? 0 : myLimit);
		String response, line, msgText, originator, dateStr, refNo;
		BufferedReader reader;
		StringTokenizer tokens;
		InboundMessage msg;
		Calendar cal1 = Calendar.getInstance();
		Calendar cal2 = Calendar.getInstance();
		for (int ml = 0; ml < (getATHandler().getStorageLocations().length() / 2); ml++)
		{
			if (getATHandler().switchStorageLocation(getATHandler().getStorageLocations().substring((ml * 2), (ml * 2) + 2)))
			{
				response = getATHandler().listMessages(msgClass);
				response = response.replaceAll("\\s+OK\\s+", "\nOK");
				reader = new BufferedReader(new StringReader(response));
				for (;;)
				{
					line = reader.readLine();
					if (line == null) break;
					line = line.trim();
					if (line.length() > 0) break;
				}
				while (true)
				{
					if (line == null) break;
					if (line.length() <= 0 || line.equalsIgnoreCase("OK")) break;
					i = line.indexOf(':');
					j = line.indexOf(',');
					memIndex = Integer.parseInt(line.substring(i + 1, j).trim());
					tokens = new StringTokenizer(line, ",");
					tokens.nextToken();
					tokens.nextToken();
					if (Character.isDigit(tokens.nextToken().trim().charAt(0)))
					{
						line = line.replaceAll(",,", ", ,");
						tokens = new StringTokenizer(line, ",");
						tokens.nextToken();
						tokens.nextToken();
						tokens.nextToken();
						refNo = tokens.nextToken();
						tokens.nextToken();
						dateStr = tokens.nextToken().replaceAll("\"", "");
						cal1.set(Calendar.YEAR, 2000 + Integer.parseInt(dateStr.substring(0, 2)));
						cal1.set(Calendar.MONTH, Integer.parseInt(dateStr.substring(3, 5)) - 1);
						cal1.set(Calendar.DAY_OF_MONTH, Integer.parseInt(dateStr.substring(6, 8)));
						dateStr = tokens.nextToken().replaceAll("\"", "");
						cal1.set(Calendar.HOUR_OF_DAY, Integer.parseInt(dateStr.substring(0, 2)));
						cal1.set(Calendar.MINUTE, Integer.parseInt(dateStr.substring(3, 5)));
						cal1.set(Calendar.SECOND, Integer.parseInt(dateStr.substring(6, 8)));
						dateStr = tokens.nextToken().replaceAll("\"", "");
						cal2.set(Calendar.YEAR, 2000 + Integer.parseInt(dateStr.substring(0, 2)));
						cal2.set(Calendar.MONTH, Integer.parseInt(dateStr.substring(3, 5)) - 1);
						cal2.set(Calendar.DAY_OF_MONTH, Integer.parseInt(dateStr.substring(6, 8)));
						dateStr = tokens.nextToken().replaceAll("\"", "");
						cal2.set(Calendar.HOUR_OF_DAY, Integer.parseInt(dateStr.substring(0, 2)));
						cal2.set(Calendar.MINUTE, Integer.parseInt(dateStr.substring(3, 5)));
						cal2.set(Calendar.SECOND, Integer.parseInt(dateStr.substring(6, 8)));

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人精品一区二区三区四区 | 成人va在线观看| 亚洲成人黄色小说| 一区二区三区中文字幕精品精品| 国产精品三级久久久久三级| 国产日本欧洲亚洲| 国产女主播视频一区二区| 国产精品天干天干在线综合| 国产亚洲一区字幕| 中文字幕一区在线观看| 亚洲精品成人a在线观看| 亚洲国产日韩av| 日本成人在线看| 国内精品国产三级国产a久久| 国产一区啦啦啦在线观看| 国产91对白在线观看九色| 97久久精品人人澡人人爽| 91官网在线免费观看| 欧美日韩一区在线观看| 精品国产一区二区三区不卡| 欧美精品一区二区三区四区| 国产精品久久久久婷婷二区次| 综合精品久久久| 视频在线观看一区二区三区| 国产一区二区精品久久91| 91玉足脚交白嫩脚丫在线播放| 欧美日韩一区在线观看| 26uuu亚洲| 亚洲综合另类小说| 国产成人啪午夜精品网站男同| 99久久精品国产网站| 欧美精品久久一区二区三区 | 精品中文av资源站在线观看| 国产a久久麻豆| 一本一道久久a久久精品 | 国产精品蜜臀av| 亚洲午夜激情网站| 国产白丝精品91爽爽久久| 欧美日韩午夜精品| 国产精品不卡一区二区三区| 日韩经典一区二区| 99精品一区二区三区| 欧美成人在线直播| 夜夜操天天操亚洲| 国产很黄免费观看久久| 欧美三级电影在线看| 久久久久国产精品麻豆ai换脸| 亚洲国产精品精华液网站| 国产91在线观看丝袜| 日韩三级在线免费观看| 国产欧美一区二区精品仙草咪| 一区二区三区四区在线播放| 国产福利一区二区三区视频在线| 欧美日韩五月天| 亚洲精品中文字幕乱码三区| 蜜乳av一区二区| 欧美群妇大交群的观看方式| 国产精品蜜臀在线观看| 国产乱人伦精品一区二区在线观看| 在线观看视频一区二区欧美日韩| 国产精品三级视频| 精品亚洲欧美一区| 精品奇米国产一区二区三区| 午夜欧美2019年伦理| 色偷偷一区二区三区| 国产情人综合久久777777| 蜜臀久久99精品久久久久久9| 色中色一区二区| 亚洲人成网站影音先锋播放| 激情五月激情综合网| 欧美日韩视频专区在线播放| 亚洲精品国产一区二区三区四区在线| 国产精品白丝jk白祙喷水网站 | 亚洲午夜免费福利视频| 成人av综合在线| 久久精品亚洲乱码伦伦中文 | 亚洲午夜精品久久久久久久久| 国产成人h网站| 久久久夜色精品亚洲| 视频精品一区二区| 欧美在线观看视频一区二区| 精品精品欲导航| 免费观看在线色综合| 波多野结衣精品在线| 亚洲欧美日韩国产综合在线| 91碰在线视频| 国产精品萝li| 日本韩国精品在线| 亚洲亚洲精品在线观看| 色综合天天综合| 亚洲色图制服诱惑 | 精品久久99ma| 国产毛片精品国产一区二区三区| 欧美一区二区三区在线看| 亚洲视频在线一区二区| 日本高清不卡视频| 一区二区成人在线| 欧美人狂配大交3d怪物一区| 午夜精品一区二区三区三上悠亚| 678五月天丁香亚洲综合网| 亚洲第一会所有码转帖| 欧美精品123区| 国产精品456露脸| 国产女主播在线一区二区| 丰满白嫩尤物一区二区| 一区二区三区欧美日| 日韩欧美一卡二卡| 99re成人精品视频| 秋霞午夜av一区二区三区| 久久综合一区二区| 成人app网站| 青娱乐精品视频| 国产三区在线成人av| 91高清视频在线| 国产真实乱子伦精品视频| 国产日韩欧美激情| 91女厕偷拍女厕偷拍高清| 亚洲国产精品一区二区www | 欧美人体做爰大胆视频| 日本美女视频一区二区| 久久精品男人天堂av| 色哟哟精品一区| 国内外成人在线| 亚洲免费高清视频在线| 欧美乱妇一区二区三区不卡视频| 精品在线一区二区| 一区二区三区欧美| 久久久久99精品一区| 国产在线一区二区综合免费视频| 亚洲欧美一区二区三区国产精品 | 欧美日韩精品一区二区三区四区| 精久久久久久久久久久| 中文字幕一区视频| 久久精子c满五个校花| 在线综合亚洲欧美在线视频| 成人av影院在线| 欧美a一区二区| 亚洲婷婷国产精品电影人久久| 欧美一区二区视频在线观看2022| 色婷婷国产精品综合在线观看| 国产精品自在欧美一区| 亚洲精品国久久99热| 亚洲欧洲成人自拍| 久久久777精品电影网影网| 日韩免费高清视频| 99国产精品久| 日韩美女视频一区二区 | 国产精品资源站在线| 亚洲日本韩国一区| 国产精品卡一卡二| 亚洲国产高清在线| 亚洲国产成人私人影院tom| 色就色 综合激情| 国模少妇一区二区三区| 国产一区二区三区四| 日本免费新一区视频| 中文字幕亚洲成人| 久久综合久久综合亚洲| 欧美蜜桃一区二区三区 | 久久精品视频在线免费观看| 日韩视频一区二区在线观看| 日韩精品一区二区三区视频在线观看| 国产做a爰片久久毛片| 国产很黄免费观看久久| 成人一区二区三区中文字幕| 国产精品一品视频| 激情另类小说区图片区视频区| 国内成人自拍视频| 久久国产视频网| 久久精品国产精品亚洲精品| 国内精品伊人久久久久影院对白| 国产福利91精品一区| 成人精品鲁一区一区二区| 福利一区福利二区| 在线免费不卡视频| 欧美三级视频在线播放| 国产精品资源在线观看| 一本在线高清不卡dvd| 欧美裸体bbwbbwbbw| 91精品国产品国语在线不卡| 久久久久久一级片| 中文字幕乱码日本亚洲一区二区| 色先锋久久av资源部| 欧美在线观看视频一区二区三区| 在线亚洲欧美专区二区| 欧美日韩精品一区二区三区| 精品国产乱码久久久久久图片 | 久久久久久久久久久久久夜| 884aa四虎影成人精品一区| 色哟哟欧美精品| 99精品国产热久久91蜜凸| 91精品国产免费久久综合| 欧美一区二区不卡视频| 国产精品不卡视频| 一区二区三区久久久| 亚洲国产精品麻豆| 韩国成人在线视频| av亚洲产国偷v产偷v自拍| 欧美色手机在线观看| 国产亚洲综合性久久久影院|