最近公司沒事找事,本來想幹的事情又被耽誤了……不連貫啊~~~555555555555……
半夜睡不着覺,想起部落格又一段時間沒更新了,準備寫點新内容。
————————————————————————————————————————————
衆 所周知,SMS(Short Messaging Service)即短消息業務,是由Etsi所制定的一個規範(GSM 03.40 和 GSM03.38)。當使用其7-bits編碼時,可以發送最多160個字元;使用8-bit編碼,最多可以發送140個字元,通常無法直接通過手機顯 示;還有用16-bit編碼時,最多70個字元,被用來顯示Unicode(UCS2)文本資訊,可以被大多數的手機所顯示。由于SMS是目前大衆所使用 的幾大主流資訊傳遞手段之一,雖然鄙人并不從事短信服務開發,但作為一個程式員來講始終藝不壓身,尤其最近十一期間業餘接觸了相關資料(給朋友群發短信 玩……),是以準備将一些資料放在部落格上以供有需要者參考。
目前來說,短信的軟體發送大體有三種途徑:
1、 網關方式:就是向當地的電信部門申請,不需要額外的裝置,利用對方提供的API調用程式發送短信,适用于大型的通信公司,像華為、傲天、中興、亞信等。
2、 終端方式:就是借助像GSM MODEM之類的設定(支援AT指令的手機也行),通過資料線連接配接電腦,來發送短信,用這種方法比較适用于小型及個人。要實作這種方式必須了解序列槽通信、AT指令、短信編碼、解碼。
3、 利用網站實作,由網站代發短信資料,對網站依賴性太高,對網絡的要求也比較高,不适于進行項目開發。
由于我是個人使用,是以本文選擇了AT指令方式作為講解。
所 謂AT,即Attention。AT指令集是從Terminal Equipment或Data Terminal Equipment向Terminal Adapter或Data Circuit Terminating Equipment發送的,通過TA、TE發送AT指令來控制Mobile Station的功能與GSM網絡業務進行互動。我們可以通過AT指令進行呼叫短信、電話本、資料業務、補充業務、傳真等方面的控制。
在Java程式設計中,我們可以通過Java Comm進行手機與電腦的序列槽通訊,以此通過AT指令控制手機操作。
但由于AT指令操作是非常之簡單的,我們完全可以自己寫元件完成相關操作,而且針對聯通、移動、小靈通等不同的服務需求,自制元件反而更容易控制及擴充,故此我也寫了一個簡單的SMS元件釋出在此文中。
使用示例如下:
package org.test;
import org.loon.framework.test.sms.SMS;
import org.loon.framework.test.sms.SMSImpl;
/**
* Copyright 2008
*
* 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
* [url]http://www.apache.org/licenses/LICENSE-2.0[/url]
* 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.
* @project loonframework
* @author chenpeng
* @email:[email][email protected][/email]
* @version 0.1
*/
public class SendManager {
public static void main(String[] args) throws Exception {
SMS sms = new SMSImpl();
// 與預設手機端口建立通訊
sms.begin();
// 發送短信,1:目标手機号碼,比如13010112500 2:短信内容,預設使用pdu模式,7-bit編碼
sms.getDriver().sendMessage("13010112500","收到此短信者速速請我吃飯,仿膳标準即可,神兵火急如律令111……");
// 關閉通訊
sms.end();
}
}
本文轉自 cping 51CTO部落格,原文連結:http://blog.51cto.com/cping1982/129618